如何在ASP.NET MVC中提供favicon.ico的最终/最佳建议是什么?
我目前正在做以下事情:
在RegisterRoutes方法的一开始中添加一个条目:
routes.IgnoreRoute("favicon.ico");
将favicon.ico放在我的应用程序的根目录中(这也将是我的域的根目录)。
我有两个问题:
Content
和Controllers
处于同一级别时,它非常狡猾。此IgnoreRoute("favicon.ico")
声明是否足够 - 或者我是否应按照a blog post from Phil Haack中的说明执行以下操作。我不知道曾经在根目录以外的任何目录中看到过对favicon.ico的请求 - 这会使这个变得不必要(但知道如何去做就好了。)
routes.IgnoreRoute("{*favicon}", new {favicon=@"(.*/)?favicon.ico(/.*)?"});
答案 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中可以解决此问题