关于如何在ASP中提供favicon.ico,最终/最好的建议是什么?净MVC吗?

我目前正在做以下事情:

在RegisterRoutes方法的最开始添加一个条目: routes.IgnoreRoute (ico“位于”); 将favicon.ico放在我的应用程序的根目录中(这也将是我的域的根目录)。

我有两个问题:

Is there no way to put the favicon.ico somewhere other than the root of my application. It's pretty icky being right there at the same level as Content and Controllers. Is this IgnoreRoute("favicon.ico") statement sufficient - or should I also do the following as discussed in a blog post from Phil Haack. I'm not aware of ever having seen a request to favicon.ico in any directory other than the root - which would make this unnecessary (but it's good to know how to do it). routes.IgnoreRoute("{*favicon}", new {favicon=@"(.*/)?favicon.ico(/.*)?"});


1)你可以把你的图标放在你想要的地方,并把这个标签添加到你的页头

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

尽管有些浏览器会默认从/favicon.ico中获取favicon,所以你应该使用IgnoreRoute。

2)如果浏览器在另一个目录下请求favicon,它会得到一个404错误,如果你在主页的答案1中有链接标签,浏览器会得到你想要的favicon。


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

如果你想服务不同的图标-把它放在控制器。 你可以这样做。如果没有,就把它留在根文件夹中。


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

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

你也可以在IE以外的浏览器中使用非ICO文件,为此我可能会使用以下条件语句来提供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]-->

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


我同意克里斯的回答,但这是一个特定的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"/>

使用这个代替favicon.ico,后者倾向于搜索fav图标文件

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

使用所请求的路径并与fav图标文件结合,以便它获得其搜索的准确地址

使用这个解决了Fav。图标错误,该错误总是在Application_Error上引发


以上这些方法对我都没用。我最终通过将favicon.ico重命名为myicon.ico来解决这个问题,并在头部<link rel="icon" href="~/myicon.ico" type="image/x-icon" />中引用它


你所需要做的就是添加app.UseStaticFiles();在startup.cs -> public void configuration (IApplicationBuilder app, IHostingEnvironment env)。

ASP.net核心提供了获取静态文件的绝佳方式。这就是使用wwwroot文件夹。请在ASP中阅读静态文件。净的核心。

使用<Link />不是一个很好的主意。为什么有人会在favicon.ico的每个HTML或cshtml上添加链接标签?


发现在.Net Core中,将favicon.ico放在/lib中而不是wwwroot中可以修复这个问题