当我明确抛出页面级异常时,我遇到了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
更改为开启或关闭每当我在VS中抛出异常时,我都会尝试进入它,但它会继续运行。有谁知道为什么Application_Error
没有被解雇?
编辑:看起来范围会影响是否调用Application_Error
。所以问题是,为什么Application_Error
没有在页面级别被调用。