asp.net-mvc – 在MVC4中路由具有扩展名的url将无法正常工作,尝试提供静态文件

前端之家收集整理的这篇文章主要介绍了asp.net-mvc – 在MVC4中路由具有扩展名的url将无法正常工作,尝试提供静态文件前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我使用MVC4,需要将这样的请求路由到控制器:

[MYAPP] /data/fileinfo.xml

这是我配置的路由:

routes.MapRoute(
            name: "Data",url: "Data/{file}",defaults: new { controller = "Data",action = "fileinfo"}
        );

现在,如果URL不包含.xml扩展名,这样就可以将请求发送到我的DataController,但一旦使用扩展名,IIS会尝试提供一个静态文件(而不是路由到我的控制器),而且得到404错误.

我已经在线阅读了关于这个问题的大量问题/答案,并且我尝试的每个解决方案都失败了.

例如,我在配置我的RouteCollection时尝试使用RouteExistingFiles = true,并且我添加了< modules runAllManagedModulesForAllRequests =“true”/>在web.config中,但无效.

如果任何人有一个想法,我应该尝试什么或我可能会失踪,这将是非常感谢.我使用的是asp.Net 4.5,VS 2012和IIS 8.0.

解决方法

您可以将其添加到< system.webServer>< handlers>中的web.config中.部分:
<add name="ManagedDllExtension" 
     path="data/fileinfo.xml" 
     verb="GET" type="System.Web.Handlers.TransferRequestHandler"
     preCondition="integratedMode,runtimeVersionv4.0" />

你的路线是

routes.MapRoute(
        name: "Data",url: "Data/fileinfo.xml",action = "fileinfo"}
    );

还有< modules runAllManagedModulesForAllRequests =“true”>但它似乎不适用于MVC4 / IIS8(曾经在MVC3 / IIS7 IIRC中).更多信息here.还有一个性能影响这一个,因为每个请求将路由通过管理的管道.

HTH

原文链接:https://www.f2er.com/aspnet/249560.html

猜你在找的asp.Net相关文章