gpt4 book ai didi

asp.net - 异常日志记录 HttpModule 不会捕获来自 ASP .NET 页面方法的错误

转载 作者:行者123 更新时间:2023-12-03 00:57:33 24 4
gpt4 key购买 nike

我们有一个 HttpModule,旨在捕获异常并将其记录到数据库中。它看起来像这样:

public class ExceptionLoggingModule : IHttpModule
{
public void Init(HttpApplication context)
{
context.Error += OnError;
}

private static void OnError(object sender, EventArgs e)
{
try
{
var context = (HttpApplication) sender;
var exception = context.Server.GetLastError();

if (exception != null)
{
// Log exception
}
}
catch(Exception)
{
}
}
}

这通常有效,但我刚刚注意到,当页面方法(即标记有 WebMethod 属性的代码隐藏文件中的方法)中发生错误时,OnError 方法永远不会触发。

怎么会这样?

除了在页面方法本身内部重新实现异常日志记录之外,我还能做些什么吗?

最佳答案

我在这里找到了一个适合我的解决方案:

http://blogs.microsoft.co.il/blogs/oshvartz/archive/2008/05/17/asp-net-error-handling-using-httpmodule-full-and-partial-post-back-ajax-updatepanel.aspx

这是我编写的处理程序的要点:

public class PathfinderModule : IHttpModule
{
public void Init(HttpApplication context)
{
context.PostMapRequestHandler += this.OnPostMapRequestHandler;
context.Error += OnError;
}

private void OnPostMapRequestHandler(object sender, EventArgs e)
{
Page aux = HttpContext.Current.Handler as Page;

if (aux != null)
{
aux.Error += this.OnPageError;
}
}

private static void OnError(object sender, EventArgs e)
{
// Blah..
}

private void OnPageError(object sender, EventArgs e)
{
// Blah...
}
}

关于asp.net - 异常日志记录 HttpModule 不会捕获来自 ASP .NET 页面方法的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12950011/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com