代码之家  ›  专栏  ›  技术社区  ›  Simon_Weaver

在ASP中提供favicon.ico。NET MVC

  •  260
  • Simon_Weaver  · 技术社区  · 16 年前

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

    我目前正在做以下工作:

    • 向添加条目 开始 关于我的RegisterRoutes方法:

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

    我有两个问题:

    • 除了我的应用程序的根目录之外,没有办法把favicon.ico放在别的地方吗。在那里和我处于同一水平真是太恶心了 Content Controllers .
    • 是这个吗 IgnoreRoute("favicon.ico") 声明充分,或者我是否也应该按照中讨论的那样做以下事情 a blog post from Phil Haack 。我不知道在根目录以外的任何目录中是否见过对favicon.ico的请求,这将使这变得不必要(但知道如何操作是件好事)。

      routes.IgnoreRoute("{*favicon}", new {favicon=@"(.*/)?favicon.ico(/.*)?"});
      
    9 回复  |  直到 8 年前
        1
  •  229
  •   AlexC    11 年前

    我同意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"/>
    
        2
  •  207
  •   Chris    16 年前

    将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]-->
    
        3
  •  22
  •   Eduardo Campañó    16 年前

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

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

    尽管默认情况下,一些浏览器会尝试从/favicon.ico获取favicon,但您应该使用IgnoreRoute。

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

        4
  •  7
  •   dmajkic    16 年前

    我认为 图标文件 应该在根文件夹中。它只属于那里。

    如果你想提供不同的图标,把它放在控制器中。 你可以做到的。如果没有,就把它放在根文件夹中。

        5
  •  4
  •   Tracy Zhou    7 年前

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

        6
  •  2
  •   Carles Company    15 年前

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

        7
  •  2
  •   Ripal Barot    6 年前

    您需要做的就是添加 app.UseStaticFiles(); 在您的startup.cs中-> public void Configure(IApplicationBuilder app, IHostingEnvironment env) .

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

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

        8
  •  0
  •   Tribhuvan Patel    11 年前

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

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

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

    使用此方法解决了始终在Application_error上引发的Fav.icon错误

        9
  •  0
  •   Dimitris Kouris    5 年前

    在里面找到的。Net Core,将favicon.ico放在/lib而不是wwwroot中可以解决这个问题