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