Рассмотрим StaticResourceController, который находит и обслуживает файлы.
Я установил явный маршрут для «favicon.ico», который будет обрабатывать запрос на этот файл с помощью StaticResourceController:
routes.MapRoute(
"favicon",
"favicon.ico",
new { controller = "StaticResource", action = "Get", file = "favicon.ico", area="root"},
new[] { "Dimebrain.Mvc.Controllers" }
);
В IIS6 ожидаемый результат возникает при запросе https://localhost:8080/favicon.ico. .
К сожалению, когда я развертываю IIS7, https://localhost/favicon.ico возвращает сгенерированный IIS 404, предположительно потому, что на самом деле он ищет favicon.ico в корневой папке веб-сайта, где его нет.
У меня достаточно событий в StaticResourceController, и это не очень хорошо для моего приложения, тем более, что оно является многопользовательским и файл favicon.ico может измениться. Я настроил свои модули веб-сервера для обработки каждого запроса и переопределил RouteCollection, чтобы игнорировать проверки файлов с помощью RouteExistingFiles.
Почему UrlRoutingModule мешает мне в IIS7 и заставляет обслуживать статический файл с диска (404)?