【问题标题】:ASP.Net healthMonitoring with AJAXASP.Net healthMonitoring with AJAX
【发布时间】:2009-06-03 13:32:17
【问题描述】:

目前,在我们所有的环境中,我们都开启了健康监测功能,以便在用户导致错误时提醒我们:

<healthMonitoring enabled="true">
  <providers>
    <add name="MailWebEventProvider" type="System.Web.Management.SimpleMailWebEventProvider" to="email@addr.com" from="email@addr.com" 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”,它将触发运行状况监视器;但是,它会删除用户看到的错误。有谁知道如何在不抛出这样的错误的情况下启动健康监视器?

【问题讨论】:

    标签: asp.net ajax health-monitoring


    【解决方案1】:

    不确定这是否是您要查找的内容,但在查看 hereherehere 之后,您似乎可以创建自定义 Web 事件,您可以从后面的代码中调用这些事件。因此,您可以从导致部分页面回发在服务器上留下通知的函数中调用这些处理程序。

    特别检查第一个链接;它详细介绍了如何构建自定义网络事件。

    【讨论】:

      【解决方案2】:

      根据 Matthew 的建议,我想出了这个:

      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)
          {
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-11-09
        • 1970-01-01
        • 2011-06-03
        • 1970-01-01
        • 1970-01-01
        • 2020-09-28
        • 2012-02-19
        相关资源
        最近更新 更多