考虑一个定位和提供文件的 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,大概是因为它实际上是在 Web 根文件夹中寻找 favicon.ico,但它并不存在。
我在 StaticResourceController 中发生了很多事情,这对我的应用程序来说不是一件好事,特别是因为它是多租户的并且 favicon.ico 文件可以更改。我已经将我的 Web 服务器模块设置为处理每个请求并覆盖 RouteCollection 以忽略使用 RouteExistingFiles 进行的文件检查。
为什么 UrlRoutingModule 在 IIS7 中妨碍我并强制从磁盘 (404) 提供静态文件?