favicon.ico 404

时间:2012-11-21 15:43:40

标签: asp.net-mvc-3 iis-7 http-status-code-404

我的母版页中有一个favicon的图标(假设我已经定义了〜/ resources / company.ico)。 现在如果这个company.ico不存在,浏览器(测试ie和mozilla)将尝试查找默认的favicon名称,即〜/ favicon.ico。如果最后一个不存在,它将直接404到用户屏幕。

如果对于ex,这是非常不同的。我把一个链接放到了不存在的css文件中,浏览器将隐藏用户的404并显示没有此资源的页面。

为什么这两种情况的表现如此不同? 这种情况只能通过favicon.ico实现,还是可以与其他“特定”类型的资源一起发生?

2 个答案:

答案 0 :(得分:3)

此行为仅与favicon有关,取决于浏览器的实现。

答案 1 :(得分:2)

可能在我最初的问题中没有足够的信息,我期待有人指出它不应该那样。后来通过使用缺少favicon的静态页面证明了这一点,该页面正在优雅地处理该资源的404。

答案实际上与web.config中http模块上的Run All Modules选项有关,因为静态文件(CSS,JS,* .ico等)是通过ASP.Net管道运行的。

我们正在使用磁带提供静态文件,我们使用的磁带版本不支持关闭RAMMFAR选项。

这些是对web.config的更改,它停止了错误的行为:

<modules runAllManagedModulesForAllRequests="false">
    <add name="CassetteHttpModule" type="Cassette.Aspnet.CassetteHttpModule, Cassette.Aspnet" />
    <add name="AuthenticationModule" type="ProjName.Web.HttpModules.AuthenticationModule" preCondition="managedHandler" />
    <add name="ErrorModule" type="ProjName.Web.HttpModules.ErrorModule" preCondition="managedHandler" />
</modules>

感谢所有想要帮助的人。

资源有助于:

Scott Hanselman:http://www.hanselman.com/blog/BackToBasicsDynamicImageGenerationASPNETControllersRoutingIHttpHandlersAndRunAllManagedModulesForAllRequests.aspx

Rick Strahl:http://www.west-wind.com/weblog/posts/2012/Oct/25/Caveats-with-the-runAllManagedModulesForAllRequests-in-IIS-78