2014-12-19 151 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放入根目錄就簡單多了。