我使用C#以编程方式从ASP.NET生成favicon,除了Chrome之外,它在所有浏览器中都能正常工作。
我将页面传递给方法SetFavIcon并使用HtmlLink类设置它,该类是System.Web.UI.HtmlControls命名空间的一部分。这就是我的做法;
public static void SetFavIcon(Page p)
{
HtmlLink link = new HtmlLink();
link.Attributes.Add("type", "image/'x-icon");
link.Attributes.Add("rel", "shortcut icon");
link.Attributes.Add("href", HttpContext.Current.Request.Url.Authority + "/_graphics/_icons/favicon.ico");
p.Header.Controls.Add(link);
}
我尝试了几个选项,例如更改类型,在favicon.ico之后添加查询字符串,但无法弄清楚为什么它只发生在Chrome中(在Internet Explorer,Mozilla Firefox和Microsoft Edge中正常工作)
我正在测试最新版本的Google Chrome - 版本49.0.2623.112 m
答案 0 :(得分:0)
检查网页的整个<head>
部分,查找非标题标记(div
,p
等)。例如:
<html>
<head>
<title>My page</title>
<div>This div has nothing to do here!!</div>
<link rel="shortcut icon" href="/favicon.ico">
</head>
<body>
...
</body>
</html>
与Firefox或IE不同,当Chrome在标题中遇到非标题标记时,它认为它已结束并假设这是正文的开头。由于link
标记与正文无关,因此Chrome会忽略错误的非标题标记后出现的所有链接。因此,在上面的示例中,title
有效(它位于div
之前)但不是link
。