我正在查看我们的日志并遇到错误:
未提供所需的防伪标记或无效。
似乎其中一个开发人员可能没有将令牌添加到页面上或者没有通过AJAX调用发送它。问题是我不知道在我们的代码库中它起源于何处。它是由我们添加的[HandleError]日志代码记录的,但是我们无法知道导致这种情况的方法。
堆栈跟踪仅向我们显示以下似乎不太有用的内容:
在System.Web.Helpers.AntiForgeryWorker.Validate(HttpContextBase) context,String salt)at System.Web.Mvc.ControllerActionInvoker.InvokeAuthorizationFilters(ControllerContext controllerContext,IList`1过滤器,ActionDescriptor actionDescriptor) 在 System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext,String actionName)
BaseController中的OnException方法如下所示:
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抛出异常。
感谢帮助。
答案 0 :(得分:0)
根据BuildStarted的响应,答案在于filterContext的RouteData属性。我有一个对象转储器,它写出了任何对象的属性,这就是我现在在日志中看到的内容。
的RouteData:
[0]:[controller,Assess]
[1]:[动作,设置]
[2]:[id,2]
所以现在我知道造成这种情况的确切方法。