我正在尝试理解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时,它应该给我一个错误,因为没有"Content"控制器,而请求肯定会命中默认模式。但是我看到的是我的HTML页面。我在这里做错了什么?更新: 我想我必须放弃了。 即使我添加一个像这样的路由:
routes.MapRoute("", "Content/{*anything}", new {controller = "Home", action = "Index"});
即使我请求的URL是~/Content/HTMLPage,它仍然显示HTML页面的内容。 但是当我添加文件扩展名,例如.html或.txt时,会显示内容(如果文件不存在,则会显示404错误)。 如果有人可以在VS2012中检查这个问题,请让我知道你得到的结果。 谢谢。