2010-09-17 62 views
0

我有一個相當標準的MVC2應用程序運行在4.0和IIS6下。我採用通配符過濾方法將所有請求路由到asp.net ISAPI過濾器。到現在爲止還挺好。Global.asax異常處理和HTTP錯誤代碼

我現在已經在global.asax中的Application_Error中添加了一些代碼來捕獲異常並通過電子郵件發送給我堆棧等等。這也可以正常工作。

但是,我收到各種404相關的流量。大多數情況下「路徑控制器/favicon.ico」沒有找到或沒有實現IController「,但我可以想象,我很快就會收到robot.txt請求等。

有沒有什麼辦法可以讓我得到HTTP來自HttpContext.Current.Server.GetLastError()的錯誤代碼?那麼我可以簡單地忽略所有的404結果。還是有我應該看的另一種方法?

回答

2

問一個問題,找到答案....

我需要測試這一點,但它看起來有保證。

var ex = HttpContext.Current.Server.GetLastError(); 

// filter out 404 responses 
var httpException = ex as HttpException; 
if (httpException != null && httpException.GetHttpCode() == 404) 
    return; 
2

關於圖標,你可以做到這一點在Global.asax中添加一個忽略路線:

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

不錯的做法,但我希望有一些更通用的東西。我認爲這隻能通過404陷阱來完成。 – andleer 2010-09-17 22:02:49

+1

也許。我認爲這裏的主要問題是,你正在解僱靜態文件處理程序,將所有內容發送到ASPNET_ISAPI。 你可以從你的應用程序下載你的圖像? – MartinHN 2010-09-17 22:04:47