我有一个MVC控制器,其中包含一些参数,其中最后一个是带扩展名的文件名,这是导致问题的最后一个参数。
说我想创建的格式是:
http://example.com/worker/90bef68f718a434bb588120e717fa29c/foo.txt
此URL将为404,但是如果我删除句点或添加尾随/然后处理程序被命中并正常执行。
不幸的是,我尝试实现的网址格式无法适应这些工作。
路线定义如下:
routes.MapRoute(
name: "Worker Handler",
url: "worker/{guid}/{fileName}",
defaults: new { controller = "Worker", action = "Index" }
);
有些阅读建议更改网址模板以包含{fileName}到{* fileName},但是这也无法解决此问题。
答案 0 :(得分:2)
我可以提出两个解决方案。
首先使用这样的路由(FileName和FileExtention在单独的参数中)
routes.MapRoute(
name: "Worker Handler",
url: "worker/{guid}/{fileName}/{fileextention}",
defaults: new { controller = "Worker", action = "Index" }
);
另一个解决方案是在web.config中添加以下内容。
<system.webServer>
<modules>
<remove name="UrlRoutingModule-4.0" />
<add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule" preCondition="" />
</modules>
</system.webServer>
从http://www.britishdeveloper.co.uk/2010/06/dont-use-modules-runallmanagedmodulesfo.html
获取帮助路线应该是这样的。
routes.MapRoute(
name: "Worker Handler",
url: "worker/{guid}/{fileName}",
defaults: new { controller = "Worker", action = "Index" }
);
希望这对你有所帮助。