#c# #asp.net #asp.net-mvc #global-filter
#c# #asp.net #asp.net-mvc #глобальный фильтр
Вопрос:
У меня возникла проблема, из-за которой 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
не вызывается на уровне страницы.
Комментарии:
1. Это не совсем то, что я искал, но это поставило более важный вопрос об эффективной реализации глобальной обработки исключений в asp.net применение. Я использовал Application_Error для обработки всех исключений уровня приложения и точно следовал инструкциям, приведенным [здесь][1] [1]: davidjs.com/2014/04/handle-exceptions-in-asp-net-iis Это позволило мне реализовать обработку и фильтрацию исключений http. Это эффективно решило мою проблему.