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