我试图了解 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
);
}
现在,当我请求 localhost:XXXX/Content/HTMLPage.html 时,它应该给我一个错误,因为没有“内容”控制器,并且请求肯定会达到默认模式。但相反,我看到的是我的 HTMLPage。我在这里做错了什么?
更新:我想我将不得不放弃。即使我要添加这样的路线:
routes.MapRoute("", "Content/{*anything}", new {controller = "Home", action = "Index"});
它仍然向我显示 HTMLPage 的内容。当我请求像 ~/Content/HTMLPage 这样的 url 时,我按预期获得了索引页面,但是当我添加像 .html 或 .txt 这样的文件扩展名时,会显示内容(如果文件不存在,则会显示 404 错误) . 如果有人可以在 VS2012 中检查这一点,请告诉我你得到了什么结果。谢谢你。