在 ASP.Net MVC 的自訂 route 下,針對 favicon.ico 檔特別處理

最近因為特殊需求,需要在 Global.asax.cs 下新增一筆特殊的 route rule 如下︰

routes.MapRoute(
    "Default",                                         
    "{moduleName}/{controller}/{action}",             
    new { controller = "Home", action = "Index", moduleName = "" }
);

原本運作得不錯,但在新增 favicon.ico 檔設定後,突然發現在 ASP.Net MVC 下,對 favicon.ico 的 request 不像 .jpg, .png 等圖檔或 .css 檔案一樣被正常存取,而是會被當做對 Controller 的 request 而進入 MVC 的執行流程中,即參數 moduleName 會被代入 favicon.ico 這個值造成網站爆炸了這樣。

解決方式其實也很簡單,google 了一下後,發現在 Global.asax.cs 中再加上如下的設定,讓 MVC 的 Route Table 跳過對 favicon.ico 的 request 就可以了。

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

參考網址︰

  1. ASP.NET MVC: Ignore requests to favicon.ico
  2. Ignoring Favicon.ico in ASP.Net MVC

0 意見: