Asp.net mvc 文件名作为MVC控制器的最后一个参数
我有一个MVC控制器,它有一个包含几个参数的方法,最后一个参数是一个带有扩展名的文件名,正是最后一个参数导致了问题 假设我希望创建的格式是:Asp.net mvc 文件名作为MVC控制器的最后一个参数,asp.net-mvc,Asp.net Mvc,我有一个MVC控制器,它有一个包含几个参数的方法,最后一个参数是一个带有扩展名的文件名,正是最后一个参数导致了问题 假设我希望创建的格式是: http://example.com/worker/90bef68f718a434bb588120e717fa29c/foo.txt 这个URL将是404,但是如果我删除句点或添加一个尾随符,那么处理程序将被正常命中并执行 不幸的是,我尝试实现的URL格式无法适应这两种解决方法 路线定义如下: routes.MapRoute(
http://example.com/worker/90bef68f718a434bb588120e717fa29c/foo.txt
这个URL将是404,但是如果我删除句点或添加一个尾随符,那么处理程序将被正常命中并执行
不幸的是,我尝试实现的URL格式无法适应这两种解决方法
路线定义如下:
routes.MapRoute(
name: "Worker Handler",
url: "worker/{guid}/{fileName}",
defaults: new { controller = "Worker", action = "Index" }
);
一些阅读建议将url模板更改为包含{fileName}到{*fileName},但这也无法解决此问题。我可以建议两种解决方案 首先像这样使用路由(文件名和文件扩展名在单独的参数中) 另一个解决方案是在web.config中添加以下内容
<system.webServer>
<modules>
<remove name="UrlRoutingModule-4.0" />
<add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule" preCondition="" />
</modules>
</system.webServer>
希望这能对您有所帮助。在生成url之前,您是否考虑过对文件名进行编码?就像使用before一样,您可以使用其他格式的Url,然后我可以建议解决方案。我建议使用worker/{guid}/{fileName}/{fileextension}。这会解决你的问题。如果我能。。。但是不能。URL格式设置为stone格式,并以带有扩展名的文件名结尾。web.config更改完成了此操作,谢谢!马上你知道清除现有的UrlRoutingModule-4.0配置是否有任何积极或消极的影响吗?老实说,我还必须深入研究IIS中的这一点。我正在调查此事。此时我可以告诉您,它清除了IIS的默认设置,然后再次添加相同的模块。我会在这里更新帖子。
<system.webServer>
<modules>
<remove name="UrlRoutingModule-4.0" />
<add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule" preCondition="" />
</modules>
</system.webServer>
routes.MapRoute(
name: "Worker Handler",
url: "worker/{guid}/{fileName}",
defaults: new { controller = "Worker", action = "Index" }
);