Как отследить проблему ValidateAntiForgeryToken, не предоставленную? - PullRequest
1 голос
/ 09 сентября 2011

Я просматривал наши журналы и обнаружил ошибку:

Требуемый токен защиты от подделки не был предоставлен или был недействительным.

Похоже, что один из разработчиков, возможно, не добавил токен на страницу или не отправил его с помощью вызова AJAX. Проблема в том, что я понятия не имею, где в нашей базе кода это возникло. Он был записан с помощью кода регистрации [HandleError], который мы добавили, но у нас нет возможности узнать, какой метод вызвал это.

Трассировка стека показывает только следующее, что не очень полезно:

в System.Web.Helpers.AntiForgeryWorker.Validate (HttpContextBase контекст, струнная соль) в System.Web.Mvc.ControllerActionInvoker.InvokeAuthorizationFilters (ControllerContext controllerContext, IList`1 фильтры, ActionDescriptor actionDescriptor) в System.Web.Mvc.ControllerActionInvoker.InvokeAction (ControllerContext controllerContext, String actionName)

Метод OnException в нашем BaseController выглядит следующим образом:

protected override void OnException(ExceptionContext filterContext)
{
    Exception ex = filterContext.Exception;

    //
    // Custom logging code here was removed for brevity

    if (filterContext.Exception.Data.Contains("Description") == false)
        filterContext.Exception.Data.Add("Description", "Oops. Something went wrong!");

    //Displays a friendly error, doesn't require HandleError
    filterContext.ExceptionHandled = true;

    //Displays a friendly error, *requires* HandlError
    base.OnException(filterContext);
}

Мой вопрос:

Есть ли способ получить источник исключения, т.е. чтобы узнать, какой контроллер или исходный файл вызвал исключение, используя ExceptionContext.

Ценю помощь.

1 Ответ

0 голосов
/ 10 сентября 2011

На основании ответа BuildStarted ответ лежит в свойстве RouteData для filterContext.У меня есть дампер объекта, который записывает свойства любого объекта, и вот что я вижу в наших журналах:

RouteData:

[0]: [controller, Assess]

[1]: [action, Setup]

[2]: [id, 2]

Итак, теперь я знаю точный метод, который вызвал это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...