我有一個使用自定義錯誤的ASP.NET應用程序。有一個錯誤發生,我似乎無法獲得有關信息。發生錯誤時,它會觸發自定義錯誤頁面,但由於某種原因,它不會觸發Page_Error或Application_Error。如果我完全關閉CustomErrors,則完全沒有任何反饋。我迄今爲止唯一得到的反饋是重定向到自定義錯誤頁面。如何捕獲觸發自定義錯誤頁面的ASP.NET錯誤,但不是Application_Error
場景:ASP.NET WebForms應用程序。其中一個頁面有一個帶有提交按鈕的UpdatePanel。該頁面正常工作。但是如果我走開一段時間(似乎是30-60分鐘),然後回來點擊提交按鈕,什麼都不會發生;沒有錯誤,頁面沒有響應 - 什麼都沒有。在調試器中運行時,我一直無法實現這一點;它只發生在IIS(7.5)中時。 [我見過有關此問題的其他SO帖子,但沒有任何建議適用於我。]
發生錯誤時,使用CustomErrors = On或RemoteOnly,重定向到自定義錯誤頁面,並且使用RemoteOnly,從服務器,我根本沒有得到任何反饋,類似於與customerrors = off的遠程連接。我真的很希望YSOD錯誤頁面。
我試圖通過將錯誤記錄到數據庫來捕獲Page_Error中的錯誤,但那也不起作用。我知道Page_Error和DB部分正在工作,因爲如果我改變後面的提交代碼以除以零來分隔,錯誤就會記錄在數據庫中。此外,零差錯將顯示給客戶端,客戶=關閉,並在它上面將顯示自定義錯誤頁面。但是除去零除錯誤,然後等待30分鐘左右再次嘗試,即使它重定向到自定義錯誤頁面,Page_Error代碼也沒有被擊中。然後,我嘗試將Page_Error中的代碼移動到Application_Error,但同樣的事情發生。由錯誤強制劃分的作品,但這看似超時相關的錯誤並沒有。
那麼,是否有某些錯誤仍然可以觸發重定向到自定義錯誤頁面,但不會觸發Application_Error事件?
我在AJAX更新中調用的代碼中有類似的錯誤。 Elmah能夠捕捉到這個例外。我相信它也可以使用ASP.NET Health Monitoring進行查看。最後,我實際上收到了AJAX錯誤和異常消息。 –
如果錯誤在IIS到達ASP.NET執行管道之前由IIS處理,則無法在代碼中捕獲它。是否有可能IIS進程被回收或會話超時?在IIS中啓用失敗的請求跟蹤,可能會爲您提供有關失敗的更多信息。 – Sergey