global.asax中的Application_Error事件未触发

时间:2014-06-20 16:01:09

标签: c# asp.net asp.net-mvc global-filter

当我明确抛出页面级异常时,我遇到了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没有在页面级别被调用。

0 个答案:

没有答案