Я пытаюсь понять, как работает 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. Когда я запрашиваю URL-адрес, например ~/Content/HTMLPage, я получаю страницу индекса, как ожидалось, но когда я добавляю расширение файла, например .html или .txt, отображается содержимое (или ошибка 404, если файл не существует), Если кто-нибудь может это проверить в VS2012, пожалуйста, дайте мне знать, какой результат вы получаете. Спасибо.