Ответ 1
Проверьте стек вызовов исключений.
Например:
var actionMethod = new StackTrace(exception)
.GetFrames().FirstOrDefault(f =>
typeof(IController).IsAssignableFrom(f.GetMethod().DeclaringType)
).GetMethod();
Я регистрирую все ошибки, возникающие в моем методе OnException.
Как найти, в каком контроллере/действии произошла ошибка?
Проверьте стек вызовов исключений.
Например:
var actionMethod = new StackTrace(exception)
.GetFrames().FirstOrDefault(f =>
typeof(IController).IsAssignableFrom(f.GetMethod().DeclaringType)
).GetMethod();
Как подразумевается Charlino, значения доступны из параметра ExceptionContext:
protected override void OnException(ExceptionContext filterContext)
{
var controllerName = filterContext.RouteData.Values["controller"];
var actionName = filterContext.RouteData.Values["action"];
// ...
base.OnException(filterContext);
}
Добавьте следующий метод в свой global.asax и поставьте на него точку останова
public void Application_Error(object sender, EventArgs e)
{
}
Независимо от того, где в приложении возникает ошибка, точка останова на этом методе будет удалена. Отсюда вы можете увидеть значение для следующего выражения в окне быстрого просмотра, и вы узнаете, что именно стало причиной произошедшего исключения.
((System.Web.HttpApplication)(sender)).Context.AllErrors
Этот метод поможет, независимо от того, где исключение возникает в вашем веб-приложении.