Я использую ELMAH, чтобы попытаться зарегистрировать обработанные исключения (те, которые возникают при попытках перехвата). Однако я не могу заставить ELMAH регистрировать любые исключения, возникающие при попытке перехвата.
Вот мое действие:
[ValidateAntiForgeryToken]
public async Task<ActionResult> Login(LoginViewModel model) {
try {
throw new Exception("Log me elmah");
}
catch (Exception e) {
ModelState.AddModelError("", "Something unexpected happened, please try again.");
return View(model);
}
}
Я следовал советам обоих здесь:
https://docs.elmah.io/elmah-and-custom-errors/ и здесь: Как заставить ELMAH работать с атрибутом ASP.NET MVC [HandleError]?
Но мой ElmahExceptionLogger
срабатывает только для необработанных исключений.
Вот мой ElmahExceptionLogger
:
public class ElmahExceptionLogger : IExceptionFilter {
public void OnException(ExceptionContext filterContext) {
if (filterContext.ExceptionHandled) {
ErrorSignal.FromCurrentContext().Raise(filterContext.Exception);
}
}
}
Вот мой global.asax
:
public class MvcApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
}
}
Вот мой метод регистрации глобальных фильтров:
public class FilterConfig {
public static void RegisterGlobalFilters(GlobalFilterCollection filters) {
filters.Add(new ElmahExceptionLogger());
filters.Add(new HandleErrorAttribute());
/*Append no cache to all actions in all controllers so we don't cache any pages, I dont particularly like it because it means an increased server load
However there are reasons to this; The first being data gets updated regularly and we want users to have the most up-to-date data
And also you can press back after logging out to get to the cached page before. It can be overridden per action if needed */
filters.Add(new OutputCacheAttribute {
VaryByParam = "*",
Duration = 0,
NoStore = true
});
}
}
Кто-нибудь знает, как заставить ELMAH регистрировать мои исключения в try catch?