我在web api 2中配置路由
config.Routes.MapHttpRoute(
name: "Contents",
routeTemplate: "wopi/files/{name}/contents",
defaults: new { controller = "Files", action = "GetFile" }
);
config.Routes.MapHttpRoute(
name: "FileInfo",
routeTemplate: "wopi/files/{name}",
defaults: new { controller = "Files", action = "GetFileInfo" }
);
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
然后有个方法 public OwaFileInfo GetFileInfo(string name, string access_token)
但是最终请求 http://localhost:33089/wopi/files/test.docx?access_token=06l+hXK6zWTUi 这样,结果就是404,为什么啊?使用默认的路由就可以啊。
应该在方法上指定使用那个路由吧。
大侠,我指定过了的,。都试过了,还是不行
@众生少两千: 请求出现404问题,可能是因为你的请求参数`test.docx`中包含.,你尝试使用如下操作,看是否能解决您的问题。
第一种方法:修改web.config,修改```
<system.webServer>
<modules `runAllManagedModulesForAllRequests="true"`
>
<remove name="ApplicationInsightsWebTracking" />
<add name="ApplicationInsightsWebTracking" type="Microsoft.ApplicationInsights.Web.ApplicationInsightsHttpModule, Microsoft.AI.Web" preCondition="managedHandler" />
</modules>
</system.webServer>
```
在`<modules>`节点中添加`runAllManagedModulesForAllRequests="true"`
第二种方法:还是在web.config中,找到`<system.webServer>`节点下的`<
handlers>`节点下的`
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*" verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
`将path修改成`path="*"` 试试看吧。应该能解决您的问题。
@HelloTim: 我擦。第一种是要引用什么么?但是我用第二种成功了诶。怎么回事哦?就是因为 `test.docx`中包含 . 啊?什么原理 ?谢谢了哦,大神。
点要特殊处理
大侠,能不能详细说下,谢了
@众生少两千: http://blog.csdn.net/nomasp/article/details/50753967
关键字:通配符
@吴瑞祥: 大侠,不懂诶。就算加了 通配符 也是一样的啊,没懂你得意思。
@众生少两千: 我错了.
404是有2种的.一个404是webapi的路由抛出来的.一种是iis抛出来的.
如果你照上面的做法可以了.那说明你的404是iis抛出来的.和路由没关系.
@吴瑞祥: 啊。。还有这样啊。。。
@吴瑞祥: 不一样么?