C# Asp.NET WebApi中类文件名的路由
是否可以在ASP.NET Web API路由配置中添加允许处理看起来有点像文件名的URL的路由 我尝试在C# Asp.NET WebApi中类文件名的路由,c#,asp.net-web-api,asp.net-web-api-routing,C#,Asp.net Web Api,Asp.net Web Api Routing,是否可以在ASP.NET Web API路由配置中添加允许处理看起来有点像文件名的URL的路由 我尝试在WebApiConfig.Register()中添加以下条目,但没有成功(使用URIapi/foo/0de7ebfa-3a55-456a-bfb9-b658165df5f8/bar.group.json): 不过,以下方法确实有效(它按预期调用了FooController.GetGroup(id,filetag)(使用URIapi/foo/0de7ebfa-3a55-456a-bfb9-b65
WebApiConfig.Register()
中添加以下条目,但没有成功(使用URIapi/foo/0de7ebfa-3a55-456a-bfb9-b658165df5f8/bar.group.json
):
不过,以下方法确实有效(它按预期调用了FooController.GetGroup(id,filetag)
(使用URIapi/foo/0de7ebfa-3a55-456a-bfb9-b658165df5f8/group/bar
):
失败的案例返回一个IIS错误(404-找不到文件),看起来它是由我的应用程序之外的某个东西创建的。错误页(由IIS Express生成)包含以下错误详细信息:
Module = IIS Web Core
Notification = MapRequestHandler
Handler = StaticFile
Error Code = 0x80070002
我猜这意味着一个叫做“静态文件处理程序”的东西在请求到达我的代码之前就已经得到了它。最大的问题是:有没有办法防止这种情况 在进行以下设置后,是否可以尝试:
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>
更换处理程序路径过滤器。 通常是这样的:
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
请尝试使用'path=“*”'
不,那没用。然而,您的评论为我指出了一个有用的方向(我没有查看那些配置文件)。在深入研究这些问题之后,我认为我试图做的事情似乎与IIS的设计背道而驰,而且我可能会以一种可以使其正常工作的方式对其进行争论,重新设计我的应用程序(并像我在原始文章中的第二个示例那样使用请求URI)可能会更好
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*" verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />