HttpModule:如何在没有HttpContext的情况下处理HttpApplication错误?

时间:2014-09-24 13:32:33

标签: c# asp.net httpmodule httpapplication

我遇到了一个特别有趣的情况。我有一个通用的错误处理例程当前工作。最近我发现了一个有点奇怪的行为:HttpApplication.Error会启动,但HttpContext.Current将为空。这是我的HttpModule上的相关内容:

public void Init(HttpApplication context)
{
    context.Error += context_Error;
    context.PostMapRequestHandler += context_PostMapRequestHandler;

}

void context_PostMapRequestHandler(object sender, EventArgs e)
{
    var aux = HttpContext.Current.Handler as Page;
    if (aux != null) aux.Error += context_Error;
}

void context_Error(object sender, EventArgs e)
{
    _localLog.Add("HttpApplication error handler reached.");
    try
    {
        if (HttpContext.Current == null)
        {
            _localLog.Add("No HttpContext.");
        }
        else
        {
            var objError = HttpContext.Current.Server.GetLastError();

            if (objError == null)
            {
                _localLog.Add("GetLastError(): no error.");
                return;
            }

            //[Proper error handler follows here...]
        }
    }
}

有趣的事件看起来像这样:

enter image description here

我的第一个猜测是异常是在一个脱离上下文的线程中引发的。

在任何情况下,我怎样才能正确捕获它?

0 个答案:

没有答案