@ Html.AntiForgeryToken () случайно выбрасывает исключение NullReferenceException - PullRequest
0 голосов
/ 06 февраля 2019

У меня есть @ Html.AntiForgeryToken () во многих наших веб-приложениях.Это работает большую часть времени, но иногда это не так.Как это терпит неудачу, варьируется.Тем не менее, я просто сосредоточился на одном случае.В этом случае он генерирует исключение NullReferenceException.

Отладчик показывает, что Html не является нулевым.Хотя я не знаю, как это может быть нулевым.Во всяком случае, я не вижу ничего другого, на что можно было бы смотреть.Трассировка стека указывает, что исключение выдается из глубины .Net.В общем, это трудно отладить, так как мне приходится часами щелкать по кнопке, прежде чем она решит снова потерпеть неудачу.

Любая идея о том, что может быть причиной или как это исправить.

Как исключение.

Exception: System.NullReferenceException
Object reference not set to an instance of an object.
   at System.Security.Claims.Claim.get_Type()
   at System.Web.Helpers.Claims.Claim.ClaimFactory`1.Create(TClaim claim)
   at System.Web.Helpers.Claims.Claim.Create[TClaim](TClaim claim)
   at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext()
   at System.Linq.Enumerable.SingleOrDefault[TSource](IEnumerable`1 source, Func`2 predicate)
   at System.Web.Helpers.AntiXsrf.ClaimUidExtractor.GetUniqueIdentifierParameters(ClaimsIdentity claimsIdentity, String uniqueClaimTypeIdentifier)
   at System.Web.Helpers.AntiXsrf.ClaimUidExtractor.ExtractClaimUid(IIdentity identity)
   at System.Web.Helpers.AntiXsrf.TokenValidator.GenerateFormToken(HttpContextBase httpContext, IIdentity identity, AntiForgeryToken cookieToken)
   at System.Web.Helpers.AntiXsrf.AntiForgeryWorker.GetTokens(HttpContextBase httpContext, AntiForgeryToken oldCookieToken, AntiForgeryToken& newCookieToken, AntiForgeryToken& formToken)
   at System.Web.Helpers.AntiXsrf.AntiForgeryWorker.GetFormInputElement(HttpContextBase httpContext)
   at System.Web.Helpers.AntiForgery.GetHtml()
   at System.Web.Mvc.HtmlHelper.AntiForgeryToken()
   at ASP._Page_Views_Shared__Layout_cshtml.Execute() in C:\Code\Communication Screens\StudentNeeds\WebApp\Views\Shared\_Layout.cshtml:line 34
   at System.Web.WebPages.WebPageBase.ExecutePageHierarchy()
   at System.Web.Mvc.WebViewPage.ExecutePageHierarchy()
   at System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext pageContext, TextWriter writer, WebPageRenderingBase startPage)
   at System.Web.WebPages.WebPageBase.<>c__DisplayClass40_0.<RenderPageCore>b__0(TextWriter writer)
   at System.Web.WebPages.HelperResult.WriteTo(TextWriter writer)
   at System.Web.WebPages.WebPageBase.Write(HelperResult result)
   at System.Web.WebPages.WebPageBase.RenderSurrounding(String partialViewName, Action`1 body)
   at System.Web.WebPages.WebPageBase.PopContext()
   at System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext pageContext, TextWriter writer, WebPageRenderingBase startPage)
   at System.Web.Mvc.RazorView.RenderView(ViewContext viewContext, TextWriter writer, Object instance)
   at System.Web.Mvc.BuildManagerCompiledView.Render(ViewContext viewContext, TextWriter writer)
   at System.Web.Mvc.ViewResultBase.ExecuteResult(ControllerContext context)
   at System.Web.Mvc.ControllerActionInvoker.InvokeActionResult(ControllerContext controllerContext, ActionResult actionResult)
   at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList`1 filters, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult)
   at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList`1 filters, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult)

Спасибо, Скай

...