在ASP.NET MVC中提供favicon.ico

时间:2009-01-28 10:55:56

标签: asp.net asp.net-mvc razor favicon

如何在ASP.NET MVC中提供favicon.ico的最终/最佳建议是什么?

我目前正在做以下事情:

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

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

我有两个问题:

  • 没有办法将favicon.ico放在除我的应用程序根目录之外的某个地方。与ContentControllers处于同一级别时,它非常狡猾。
  • IgnoreRoute("favicon.ico")声明是否足够 - 或者我是否应按照a blog post from Phil Haack中的说明执行以下操作。我不知道曾经在根目录以外的任何目录中看到过对favicon.ico的请求 - 这会使这个变得不必要(但知道如何去做就好了。)

    routes.IgnoreRoute("{*favicon}", new {favicon=@"(.*/)?favicon.ico(/.*)?"});
    

9 个答案:

答案 0 :(得分:217)

我同意Chris的回答,但看到这是一个特定的ASP.NET MVC问题,最好使用Razor语法:

<link rel="icon" href="@Url.Content("~/content/favicon.ico")"/>

或传统上

<link rel="icon" href="<%= Url.Content("~/content/favicon.ico") %>"/>

而不是

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

答案 1 :(得分:196)

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

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

你也可以将非ico文件用于IE以外的浏览器,我可以使用以下条件语句为PNG等提供服务,以及向IE提供ICO:

<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]-->

答案 2 :(得分:19)

1)您可以将您的favicon放在您想要的位置,并将此标签添加到您的页面头

<link rel="shortcut icon" href="images/favicon.ico" type="image/x-icon" />

虽然某些浏览器默认会尝试从/favicon.ico获取favicon,因此您应该使用IgnoreRoute。

2)如果浏览器在另一个目录中请求了favicon,它将收到404错误,如果您在母版页的答案1中有链接标记,浏览器将获得您想要的图标。< / p>

答案 3 :(得分:7)

我认为 favicon.ico 应该位于根文件夹中。它就属于那里。

如果你想要不同的图标 - 把它放入控制器。 你可以做到这一点。如果不是 - 只需将其保留在根文件夹中即可。

答案 4 :(得分:3)

以上都不适合我。我终于通过将favicon.ico重命名为myicon.ico解决了这个问题,并在头部引用它<link rel="icon" href="~/myicon.ico" type="image/x-icon" />

答案 5 :(得分:2)

还应该可以创建一个控制器,该控制器返回ico文件并注册路径/favicon.ico以指向该控制器。

答案 6 :(得分:0)

使用此而不仅仅是favicon.ico,它倾向于搜索fav图标文件

> <link rel="ICON" 
> href="@System.IO.Path.Combine(Request.PhysicalApplicationPath,
> "favicon.ico")" />

使用请求的路径并与fav图标文件结合使其获得其搜索

的准确地址

使用它解决了总是在Application_Error

上引发的Fav.icon错误

答案 7 :(得分:0)

您需要做的就是在启动文件中添加fluentWait(driver, By.cssSelector("element")); 。cs-> app.UseStaticFiles();

ASP.net核心提供了一种获取静态文件的绝佳方法。那是使用wwwroot文件夹。请阅读Static files in ASP.NET Core

使用public void Configure(IApplicationBuilder app, IHostingEnvironment env)并不是一个好主意。为什么有人会在每个HTML或cshtml上为favicon.ico添加链接标记?

答案 8 :(得分:0)

发现在.Net Core中,将favicon.ico放在/ lib而非wwwroot中可以解决此问题