2

我遇到了一个问题,Application_Error当我明确抛出页面级异常时,事件似乎没有触发。

我的 Global.asax.cs 文件如下:

public class WebApiApplication : System.Web.HttpApplication
{
    protected void Application_Start()
    {
            AreaRegistration.RegisterAllAreas();
            WebApiConfig.Register(GlobalConfiguration.Configuration);
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);
            CustomExceptionClass.BootstrapEnterpriseLibrary();  
    }

    // Event handler that passes all exceptions not in a catch statement 
    // to the handler

    protected void Application_Error(object sender, EventArgs e)
    {
        Exception ex = Server.GetLastError();
        CustomExceptionClass.HandleException(ex);
        Server.ClearError();
    }
}

public class ExceptionPublisherExceptionFilter : IExceptionFilter
{
    public void OnException(ExceptionContext exceptionContext)
    {
        var exception = exceptionContext.Exception;
        CustomExceptionClass.HandleException(exception);
    }
}

public class ErrorHandler : IErrorHandler
{
    public void ProvideFault(Exception error, MessageVersion version, 
        ref Message fault)
    {
    }

    public bool HandleError(Exception error)
    {
        CustomExceptionClass.HandleException(error);
        return true;
    }
}

我的 web.config 文件有<customErrors mode="Off">.

我的 filterconfig 如下所示:

public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
    filters.Add(new ExceptionPublisherExceptionFilter());
    //filters.Add(new HandleErrorAttribute());
}

我尝试了以下修复:

  • 更改customErrors为开或关
  • 实现一个新的过滤器并将其添加到 filterconfig

每当我在 VS 中抛出异常时,我都会尝试进入它,但它只是继续运行。有谁知道为什么Application_Error不被解雇?

编辑:看起来范围会影响是否Application_Error被调用。所以问题真的是,为什么Application_Error不在页面级别被调用。

4

0 回答 0