Luc*_*c C 3 c# asp.net-web-api asp.net-web-api-routing
是否可以在ASP.NET Web API路由配置中添加允许处理看起来有点像文件名的URL的路由?
我尝试添加以下条目WebApiConfig.Register(),但这不起作用(使用URI api/foo/0de7ebfa-3a55-456a-bfb9-b658165df5f8/bar.group.json):
config.Routes.MapHttpRoute(
name: "ContextGroupFile",
routeTemplate: "api/foo/{id}/{filetag}.group.json",
defaults: new { controller = "foo", action = "getgroup"}
);
Run Code Online (Sandbox Code Playgroud)
以下确实有效(FooController.GetGroup(id,filetag)按预期调用)(使用URI api/foo/0de7ebfa-3a55-456a-bfb9-b658165df5f8/group/bar):
config.Routes.MapHttpRoute(
name: "ContextGroupFile",
routeTemplate: "api/foo/{id}/group/{filetag}",
defaults: new { controller = "foo", action = "getgroup"}
);
Run Code Online (Sandbox Code Playgroud)
失败的情况会返回一个IIS错误(404 - 找不到文件),看起来它是由我的应用程序之外的东西创建的.错误页面(由IIS Express生成)包含以下错误详细信息:
Module = IIS Web Core
Notification = MapRequestHandler
Handler = StaticFile
Error Code = 0x80070002
Run Code Online (Sandbox Code Playgroud)
我想这意味着一个名为"StaticFile Handler"的东西在它到达我的代码之前就已经得到了请求.最大的问题是:有没有办法防止这种情况发生?
您可以在进行以下设置后尝试:
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1429 次 |
| 最近记录: |