小编典典

在 ASP.NET MVC 中服务 favicon.ico

all

关于如何在 ASP.NET MVC 中服务 favicon.ico 的最终/最佳建议是什么?

我目前正在执行以下操作:

  • 在我的 RegisterRoutes 方法的 最开始 添加一个条目:

    routes.IgnoreRoute("favicon.ico");
    
  • 将 favicon.ico 放在我的应用程序的根目录中(这也将成为我的域的根目录)。

我有两个问题:

  • 除了我的应用程序的根目录之外,没有办法将 favicon.ico 放在其他地方。Content与和处于同一水平非常令人讨厌Controllers
  • 这个IgnoreRoute("favicon.ico")陈述是否足够 - 或者我也应该按照Phil Haack 的博客文章中的讨论执行以下操作。我不知道曾经在根目录以外的任何目录中看到过对 favicon.ico 的请求 - 这将使这变得不必要(但知道如何去做是件好事)。
    routes.IgnoreRoute("{*favicon}", new {favicon=@"(.*/)?favicon.ico(/.*)?"});
    

阅读 86

收藏
2022-05-18

共1个答案

小编典典

将 favicon.ico 放在域的根目录中只会影响 IE5、IIRC。对于更现代的浏览器,您应该能够包含一个链接标记以指向另一个目录:

<link rel="SHORTCUT ICON" href="http://www.mydomain.com/content/favicon.ico"/>

您还可以将非 ico 文件用于 IE 以外的浏览器,为此我可能会使用以下条件语句将 PNG 提供给 FF 等,并将 ICO 提供给 IE:

<link rel="icon" type="image/png" href="http://www.mydomain.com/content/favicon.png" />
<!--[if IE]>
<link rel="shortcut icon" href="http://www.mydomain.com/content/favicon.ico" type="image/vnd.microsoft.icon" />
<![endif]-->
2022-05-18