2014-12-19 144 views
0

我得到404错误,因为没有/favicon.ico。实际图标位于/content/favicon.ico。Favicon与ASP.net和MVC(路由)

我已经将其设置为我的HTML页面:

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

它的工作原理,但一些浏览器似乎忽略它,或者寻找/favicon.ico反正。

所以,我要求的是将“/favicon.ico”变成“/content/favicon.ico”的ASP路由。

+0

这SO线程可能是有用的http://stackoverflow.com/questions/122067/favicon-not-working-in-ie?lq=1 – Venkat 2014-12-19 12:52:01

回答

0

我通过直接在我的代码中重写目标位置来解决它。不需要任何外部重写mod,就像在类似问题上所建议的那样。

// Register event-listener in Web-App constructor 
this.PreRequestHandlerExecute += new EventHandler(MvcApplication_PreRequestHandlerExecute); 

void MvcApplication_PreRequestHandlerExecute(object sender, EventArgs e) 
{ 
    string originalPath = HttpContext.Current.Request.Path.ToLower(); 
    if (originalPath == "/favicon.ico") 
    { 
     Context.RewritePath("~/content/favicon.ico"); 
    } 
} 

MSDN文档:http://msdn.microsoft.com/en-us/library/system.web.httpserverutility.mappath(v=vs.110).aspx

0

一些浏览器在根中查找图标,因为它们是习惯于按照惯例居住的地方。 由于路由不用于像favicon图像这样的静态内容,因此添加路由将无济于事。你可以使用IIS重写模块重写这些请求,或者为这个特定的情况实现一个自定义的处理程序,但是只需要将favicon放入根目录就简单多了。