2009-06-03 30 views
3

目前,在我們所有的環境中,我們有healthmonitoring打開,提醒我們,當以往用戶已導致錯誤:ASP.Net healthMonitoring與AJAX

<healthMonitoring enabled="true"> 
    <providers> 
    <add name="MailWebEventProvider" type="System.Web.Management.SimpleMailWebEventProvider" to="[email protected]" from="[email protected]" buffer="false" subjectPrefix="prefix: "/> 
    </providers> 
    <rules> 
    <add name="All errors from my site" eventName="All Errors" provider="MailWebEventProvider" profile="Critical"/> 
    </rules> 
</healthMonitoring> 

我們最近開始實施更AJAX功能,和我剛剛意識到部分頁面更新期間引發的任何錯誤都不會觸發healthmonitor發送電子郵件。用戶獲取默認alert()消息框;然而,在服務器端沒有任何東西。

有誰知道如何打開這個?我不知道什麼設置我失蹤

編輯

我看到ScriptManager控件有一個名爲「AsyncPostBackError」的事件。如果我鉤住它並執行「拋出e.Exception」,它將觸發健康監視器;但是,它消除了用戶看到的錯誤。有誰知道如何在不拋出像這樣的錯誤的情況下啓動健康監視器?

回答

2

不知道這是你在找什麼,但看着hereherehere後,它看起來像你可以創建你可以從後面的代碼調用自定義的網絡事件。因此,您可以從導致部分頁面回發的函數中調用這些處理程序,以在服務器上留下通知。

特別檢查第一個鏈接;它詳細介紹瞭如何構建自定義Web事件。

2

與馬修的建議去,我想出了這個:

protected void ScriptManager1_AsyncPostBackError(object sender, AsyncPostBackErrorEventArgs e) 
{ 
    ((ScriptManager)sender).AsyncPostBackErrorMessage = e.Exception.Message; 

    WebBaseEvent.Raise(new AjaxWebErrorEvent(e.Exception.Message, null, 100123, e.Exception)); 
} 

哪裏AjaxWebErrorEvent是這樣的:

public class AjaxWebErrorEvent : WebRequestErrorEvent 
{ 
    public AjaxWebErrorEvent(string message, object eventSource, int eventCode, System.Exception e) 
     : base(message, eventSource, eventCode, e) 
    { 
    } 
}