我的項目有一個名爲oops.aspx的錯誤頁面。我們在global.asax
以下代碼:Global.asax沒有捕獲錯誤?
protected void Application_Error(object sender, EventArgs e)
{
Server.Transfer("~/oops.aspx", true);
}
oops.aspx
能夠提取錯誤,產生一個很好的電子郵件服務器,並顯示一條錯誤信息給用戶。
使用Server.Transfer
會保留URL,表單信息和其他有用的疑難解答信息。在oops.aspx中的某一時刻,在撰寫電子郵件時,我抓取Request.RawUrl並將其包含在電子郵件中。這是導致錯誤的頁面的URL(帶查詢字符串參數)。
我們也有這個在web.config中:
<customErrors mode="On" defaultRedirect="oops.aspx"></customErrors>
當系統重定向,因爲基於這樣的錯誤的,它重定向到/oops.aspx?aspxerrorpath=/Clients/EditClient.aspx
(有時/,有時%2F路徑分隔符)。查詢字符串和異常信息丟失,所以oops.aspx生成的電子郵件和消息很少,並且沒有太多說明發生了什麼。
最近我收到了很多第二種錯誤。錯誤發生在小束中,其中幾個在幾分鐘內,然後在幾個小時內沒有發生。他們發生在整個網站(包括WebResource.axd
等),這使我認爲這不是我們網站的特定錯誤,而是發生在較低層次上的事情,如會話服務器問題或類似事件。
因此,與所有的,我實際的問題:
我有在這樣一種方式,他們不會被抓到的Global.asax中發生的現場錯誤。什麼會導致此類錯誤,以及如何解決這些錯誤?
Darin與'Application_Error'和應用程序池處於集成管道模式有什麼關係? – VoodooChild 2012-03-14 17:50:17
@VoodooChild,如果你在IIS 6.0中以經典模式運行,當有人試圖訪問例如'/ myapp/foo.jpg'時,Application_Error將永遠不會被擊中。 ASP.NET甚至不會收到此請求的通知。 IIS將直接爲圖像提供服務。在集成管道模式下,所有請求都通過一個託管處理程序。 – 2012-03-14 17:51:40