Как найти, в котором контроллере/действии произошла ошибка?

Я регистрирую все ошибки, происходящие в моем методе OnException.

Как найти, в котором контроллере/действии произошла ошибка?

21
задан Jimmy 5 May 2010 в 02:48
поделиться

3 ответа

Проверьте стек вызовов исключения.

Например:

var actionMethod = new StackTrace(exception)
    .GetFrames().FirstOrDefault(f => 
        typeof(IController).IsAssignableFrom(f.GetMethod().DeclaringType)
    ).GetMethod();
-2
ответ дан 29 November 2019 в 06:46
поделиться

Добавьте следующий метод в ваш global.asax и поставьте на него точку останова

public void Application_Error(object sender, EventArgs e)
    {


    }

Независимо от того, где в приложении произойдет ошибка, точка останова этого метода будет достигнута. Отсюда вы сможете увидеть значение следующего выражения в окне быстрого просмотра и узнать, что именно стало причиной возникшего исключения

((System.Web.HttpApplication)(sender)).Context.AllErrors

Этот метод поможет, независимо от того, где в вашем веб-приложении возникло исключение.

-4
ответ дан 29 November 2019 в 06:46
поделиться

Как подразумевал Чарлино, значения доступны из параметра ExceptionContext:

protected override void OnException(ExceptionContext filterContext)
{
    var controllerName = filterContext.RouteData.Values["controller"];
    var actionName = filterContext.RouteData.Values["action"];

    // ...

    base.OnException(filterContext);
}
62
ответ дан 29 November 2019 в 06:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: