在 ASP.NET MVC 中提供 favicon.ico

发布于 2024-07-12 11:01:54 字数 833 浏览 10 评论 0原文

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

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

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

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

我有两个问题:

  • 除了我的应用程序的根目录之外,是否没有办法将 favicon.ico 放在其他地方。 与 ContentControllers 处于同一级别是非常令人讨厌的。
  • 这个 IgnoreRoute("favicon.ico") 语句是否足够 - 或者我还应该按照 Phil Haack 的博客文章。 我不知道在除根目录以外的任何目录中见过对 favicon.ico 的请求 - 这将使得这是不必要的(但很高兴知道如何做到这一点)。

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

What is the final/best recommendation for how to serve favicon.ico in ASP.NET MVC?

I am currently doing the following:

  • Adding an entry to the very beginning of my RegisterRoutes method:

    routes.IgnoreRoute("favicon.ico");
    
  • Placing favicon.ico in the root of my application (which is also going to be the root of my domain).

I have two questions:

  • 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(/.*)?"});
    

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(9

怂人 2024-07-19 11:01:54

我同意 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"/>

I agree with the answer from Chris, but seeing this is a specific ASP.NET MVC question it would be better to use either Razor syntax:

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

Or traditionally

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

rather than

<link rel="icon" href="http://www.mydomain.com/content/favicon.ico"/>
自由范儿 2024-07-19 11:01:54

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

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

您还可以对 IE 以外的浏览器使用非 ico 文件,为此我可能会使用以下条件语句来提供 PNG 到 FF等,以及 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]-->

Placing favicon.ico in the root of your domain only really affects IE5, IIRC. For more modern browsers you should be able to include a link tag to point to another directory:

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

You can also use non-ico files for browsers other than IE, for which I'd maybe use the following conditional statement to serve a PNG to FF,etc, and an ICO to 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]-->
哑剧 2024-07-19 11:01:54

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

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

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

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

1) You can put your favicon where you want and add this tag to your page head

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

although some browsers will try to get the favicon from /favicon.ico by default, so you should use the IgnoreRoute.

2) If a browser makes a request for the favicon in another directory it will get a 404 error wich is fine and if you have the link tag in answer 1 in your master page the browser will get the favicon you want.

爱殇璃 2024-07-19 11:01:54

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

如果您想提供不同的图标 - 将其放入控制器中。
你可以这么做。 如果没有 - 只需将其保留在根文件夹中即可。

I think that favicon.ico should be in root folder. It just belongs there.

If you want to servere diferent icons - put it into controler.
You can do that. If not - just leave it in the root folder.

花辞树 2024-07-19 11:01:54

以上都不适合我。 我最终通过将 favicon.ico 重命名为 myicon.ico 解决了这个问题,并在头部引用它

None of the above worked for me. I finally solved this problem by renaming favicon.ico to myicon.ico, and reference it in the head <link rel="icon" href="~/myicon.ico" type="image/x-icon" />

白龙吟 2024-07-19 11:01:54

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

It should also be possible to create a controller that returns the ico file and register the route /favicon.ico to point to that controller.

等风也等你 2024-07-19 11:01:54

您需要做的就是在startup.cs中添加app.UseStaticFiles(); -> 公共无效配置(IApplicationBuilder应用程序,IHostingEnvironment env)

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

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

All you need to do is to add app.UseStaticFiles(); in your startup.cs -> public void Configure(IApplicationBuilder app, IHostingEnvironment env).

ASP.net core provides an excellent way to get static files. That is using the wwwroot folder. Please read Static files in ASP.NET Core.

Using the <Link /> is not a very good idea. Why would someone add the link tag on each HTML or cshtml for the favicon.ico?

旧人九事 2024-07-19 11:01:54

使用这个而不是仅仅使用 favicon.ico 来搜索最喜欢的图标文件

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

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

使用这个解决了 Fav.icon 错误总是在 Application_Error 时引发

Use this instead of just the favicon.ico which tends to search in for the fav icon file

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

Use the requested path and combine with the fav icon file so that it gets the accurate address which its search for

Using this solved the Fav.icon error which is raised always on Application_Error

怀念你的温柔 2024-07-19 11:01:54

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

Found that in .Net Core, placing the favicon.ico in /lib rather than wwwroot fixes the issue

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文