我有一個具有單頁方法的web窗體。我的其他Web應用程序將未處理的異常記錄到Web服務器上的系統事件日誌中。由於我與其他開發人員一起工作期望在事件日誌中看到應用程序錯誤的條目,因此我希望此應用程序也能這樣做。有頁方法未處理的異常表現爲其他ASP.Net未處理的異常
但是,我有應用程序發送錯誤電子郵件時,從頁面方法內調用代碼捕獲異常。發生這種情況時,不會寫入事件日誌。注意:頁面方法在調用我的電子郵件通知方法後重新拋出異常。
從我迄今爲止閱讀的內容看來,ASP.Net默認將錯誤記錄到事件日誌中。我想,對於Page Methods/WebMethods來說,情況並非如此,因爲它們基本上將異常拋出到調用它的客戶端代碼。
是否有一個微不足道的方法讓異常冒泡得當,以便它寫入事件日誌?沒有其他應用程序直接從我看到的事件日誌中寫入事件日誌,所以我不認爲應用程序可以創建新的源,因爲我們的安全人員保留了很多東西(有良好的意圖,耶安全)。
[WebMethod]
public static object MyPseudoWebMethod()
{
try
{
// My exception spawning unreliable code here
}
catch(Exception ex)
{
// Cleanup ...
this.SendErrorNotification(ex);
throw; // <-- This doesn't bubble up but I'd love for it to!
}
}
您確定沒有像其他異常一樣處理嗎?我會假設你的應用程序會像其他任何處理那樣的錯誤,唯一的區別是客戶端頁面沒有明顯的變化。但在AJAX調用的後面,webmethod會拋出一個異常,這會使AJAX響應成爲YellowScreenOfDeath或您擁有的任何自定義錯誤頁面,並且所有後續代碼都將通過這樣的自定義錯誤頁面執行。 – Graham
錯誤日誌不包含例外情況,但它具有其他應用程序的例外情況。儘管AJAX電話不會呈現黃色屏幕。頁面已經加載,客戶端JavaScript調用webmethod,webmethod引發異常,客戶端javascript檢測到錯誤,但事件日誌中沒有記錄異常。 – jlafay
您有「具有單個WebMethod的網絡表單」嗎? –