gpt4 book ai didi

asp.net-mvc - 在 MVC4 中路由带有扩展名的 url 将不起作用,尝试提供静态文件

转载 作者:行者123 更新时间:2023-12-03 23:49:23 26 4
gpt4 key购买 nike

我正在使用 MVC4,需要将这样的请求路由到 Controller :
[myapp]/data/fileinfo.xml
这是我配置的路由:

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

现在,如果 URL 不包含 .xml 扩展名,这可以正常工作并将请求路由到我的 DataController,但一旦使用扩展名, IIS 尝试提供静态文件 (而不是路由到我的 Controller ),我收到 404 错误。

我在网上阅读了大量关于这个问题的问题/答案,我尝试过的每个解决方案都失败了。

例如,我尝试使用 RouteExistingFiles = true在配置我的 RouteCollection 时,我添加了 <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",
defaults: new { controller = "Data", action = "fileinfo"}
);

还有 <modules runAllManagedModulesForAllRequests="true">但它似乎不适用于 MVC4/IIS8(过去在 MVC3/IIS7 IIRC 中没问题)。更多信息 here .这也会对性能产生影响,因为每个请求都将通过托管管道进行路由。

HTH

关于asp.net-mvc - 在 MVC4 中路由带有扩展名的 url 将不起作用,尝试提供静态文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16886093/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com