我试图了解RouteExistingFiles的工作原理.所以我创建了一个新的MVC 3互联网项目(MVC 4的行为方式相同),并将HTMLPage.html文件放到我项目的Content文件夹中.现在我去了Global.Asax文件并编辑了RegisterRoutes函数,它看起来像这样:
public static void RegisterRoutes(RouteCollection routes)
{
routes.RouteExistingFiles = true; //Look for routes before looking if a static file exists
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new {controller = "Home", action = "Index", id = UrlParameter.Optional} // Parameter defaults
);
}
Run Code Online (Sandbox Code Playgroud)
现在,当我请求本地主机时,它应该给我一个错误:XXXX/Content/HTMLPage.html,因为没有"内容"控制器,请求肯定会达到默认模式.但相反,我正在看我的HTMLPage.我在这做错了什么?
更新:我想我必须放弃.即使我正在添加像这样的路线:
routes.MapRoute("", "Content/{*anything}", new {controller = "Home", action = "Index"});
Run Code Online (Sandbox Code Playgroud)
它仍然显示HTMLPage的内容.当我请求像〜/ Content/HTMLPage这样的URL时,我按预期获得了索引页面,但是当我添加.html或.txt这样的文件扩展时,会显示内容(如果文件不存在则会出现404错误) .如果有人可以在VS2012中查看,请告诉我你得到的结果.谢谢.