加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 在MVC4中路由具有扩展名的url将无法正常工作,尝

发布时间:2020-12-15 22:46:19 所属栏目:asp.Net 来源:网络整理
导读:我使用MVC4,需要将这样的请求路由到控制器: [MYAPP] /data/fileinfo.xml 这是我配置的路由: routes.MapRoute( name: "Data",url: "Data/{file}",defaults: new { controller = "Data",action = "fileinfo"} ); 现在,如果URL不包含.xml扩展名,这样就可以将
我使用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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读