【问题标题】:Ajax errors logged twice by ELMAHELMAH 记录了两次 Ajax 错误
【发布时间】:2023-03-30 12:37:02
【问题描述】:

我正在使用 ELMAH 进行错误记录,如果错误发生在部分回发期间(来自更新面板中包含的控件的事件处理程序),那么它会记录两次错误。我没有使用“MsAjaxDeltaErrorLog”模块,而是以编程方式记录来自 ScriptManager 控件的“AsyncPostBackError”事件处理程序的错误。我这样做是为了避免在部分回发期间发生错误重定向到通用页面。我在 web.config 中关闭了重定向。这是记录异常的代码

    protected void ScriptManager1_AsyncPostBackError(object sender, AsyncPostBackErrorEventArgs e)
    {
        HttpContext.Current.Items["AjaxError"] = "Ajax";
        ErrorSignal.FromCurrentContext().Raise(e.Exception,HttpContext.Current);
    }

    and in Global.asax, I am redirecting manually

protected void ErrorLog_Logged(object sender, ErrorLoggedEventArgs e)
{
  if (!HttpContext.Current.Items.Contains("AjaxError"))
  {
                    var pageName = e.Entry.Error.StatusCode == 404 ? "FileNotFoundPage" : "GenericErrorPage";
                    var redirectPage = ConfigurationManager.AppSettings[pageName];
                    Response.Redirect(String.Format("{0}?ExceptionId={1}&ExceptionMessage={2}", redirectPage, Server.UrlEncode(e.Entry.Id),
                                      Server.UrlEncode(e.Entry.Error.Message)));
  }
}

【问题讨论】:

    标签: asp.net error-handling elmah


    【解决方案1】:

    来自 Elmah 网站:
    (http://code.google.com/p/elmah/wiki/MSAjax)

    潜在问题

    不幸的是, MsAjaxDeltaErrorLogModule 不是 完美的解决方案。由于它的方式 作品,有一个非常小的 错误的可能性 在 ELMAH 中记录了两次。为此 发生,必须发生以下情况:

    1. 未处理的异常必须在部分回发期间发生
    2. 它必须发生在 OnInit 方法之前 System.Web.UI.PageRequestManager 是 调用。

    这将意味着标准 ELMAH 模块和 MsAjaxDeltaErrorModule 将捕获 例外。

    实际上,这种可能性 发生将是公平的 纤细。 .NET 框架 3.5

    Microsoft Ajax 的更新版本 随版本 3.5 一起提供 .NET 框架。这个新版本 改变了意外错误的方式 在部分回发被处理, 删除对 Response.End 的调用。 因此,如果您继续使用 MsAjaxDeltaErrorLogModule 与此 框架的版本,你会看到 Partial 中所有未处理的错误 PostBacks 在 ELMAH 中记录了两次。*

    我和你在同一个位置,每次我遇到异步错误时,我都会将问题记录两次,但我想除非我们修改 ELMAH 的源代码,否则我会卡住

    【讨论】:

      猜你喜欢
      • 2012-11-28
      • 1970-01-01
      • 2011-03-01
      • 2012-03-04
      • 2019-09-21
      • 2013-06-12
      • 1970-01-01
      • 2018-03-20
      • 1970-01-01
      相关资源
      最近更新 更多