我遇到了一个问题,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
不在页面级别被调用。