ASP.NET MVC路由 – 向路由添加.html扩展名

我是MVC和路由的新手,我被要求修改应用程序以使用不同的URL。 因为我没有经验,所以有点超过我的任务。

好吧,让我们谈一下代码:

routes.MapRoute( "CategoryBySeName", // Route name "products/{SeName}", // URL with parameters new { controller = "Catalog", action = "CategoryBySeName" } ); 

这按预期工作,但客户端在路径的末尾想要“.html”,所以我改变了:

 "products/{SeName}", // URL with parameters 

至:

 "products/{SeName}.html", // URL with parameters 

失败(IIS 404页面 – MapRequestHandler)似乎iis正在尝试加载具有该名称的物理文件,而不是将其传递给应用程序。

类似: ASP.NET MVC路由从html页面开始 (未回答,不重复)

您猜测IIS处理程序可能在MVC可能正确之前抓取请求。

假设IIS 7: http : //technet.microsoft.com/en-us/library/cc770990(v = ws.10).aspx

您需要在IIS中编辑.html处理程序以使用ASP.NET。

您可以在II6的映射部分的app配置中的主目录选项卡下的网站属性中找到它。

(版本可能不同):C:\ windows \ microsoft.net \ framework \ v4.0.30319 \ aspnet_isapi.dll是处理.html文件所需的。

您必须通过ASP.NET管道强制所有请求,并且您可以通过仅将此单行添加到应用程序的web.config来执行此操作:

    

将应用程序池从Classic更改为Integrated修复了该问题。 谢谢你guyz的帮助。

只需将此部分添加到Web.config,即使pathInfo中有点,指定处理程序也将处理对路径/ {* pathInfo}的所有请求。 (取自ServiceStack MVC Host Web.config示例和此答案https://stackoverflow.com/a/12151501/801189 )