0

.Net 4 および IIS6 (Win2003 サーバー) で MVC3 Web アプリケーションを実行しています。断続的に、次のエラー メッセージをキャプチャできます。

System.ArgumentException: Value cannot be null or an empty string.
Parameter name: serializedToken
   at System.Web.Helpers.AntiForgeryDataSerializer.Deserialize(String serializedToken)
   at System.Web.Helpers.AntiForgeryWorker.GetAntiForgeryTokenAndSetCookie(HttpContextBase httpContext, String salt, String domain, String path)
   at System.Web.Helpers.AntiForgeryWorker.GetHtml(HttpContextBase httpContext, String salt, String domain, String path)
   at System.Web.Helpers.AntiForgery.GetHtml(HttpContextBase httpContext, String salt, String domain, String path)
   at System.Web.Mvc.HtmlHelper.AntiForgeryToken(String salt, String domain, String path)
   at System.Web.Mvc.HtmlHelper.AntiForgeryToken()
   at ASP._Page_Views_Introduction_GetStarted_cshtml.Execute() in d:\MyProject\Views\ControllerName\ViewName.cshtml:line 43
   at System.Web.WebPages.WebPageBase.ExecutePageHierarchy()
   at System.Web.Mvc.WebViewPage.ExecutePageHierarchy()
   at System.Web.WebPages.StartPage.RunPage()
   at System.Web.WebPages.StartPage.ExecutePageHierarchy()
   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.<>c__DisplayClass1c.<InvokeActionResultWithFilters>b__19()
   at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter(IResultFilter filter, ResultExecutingContext preContext, Func`1 continuation)
   at System.Web.Mvc.ControllerActionInvoker.<>c__DisplayClass1c.<>c__DisplayClass1e.<InvokeActionResultWithFilters>b__1b()
   at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters(ControllerContext controllerContext, IList`1 filters, ActionResult actionResult)
   at System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName)

ビューにはコードがあります

    using (Html.BeginForm("ActionName", "ControllerName"))
    { 
        @Html.AntiForgeryToken()
        ... other codes ...
    }

そして、受信アクションメソッドは次のようになります

    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult ActionName()
    {
        // other logic here

        return RedirectToAction("Something", "Something");
    }

コーディングは正しいと思います。似たようなことを経験したことのある人はいますか?

4

2 に答える 2

0

Cookie を削除する代わりに無効にする Cookie クリア コー​​ドをいくつか書いた後、この例外が発生しました。RequestVerificationToken Cookie が空白の場合、AntiForgeryToken() は (GET 要求であっても) 失敗するようです。

于 2012-08-29T18:04:08.313 に答える
0

ブラウザからすべての Cookie を削除してみてください。ブラウザをシークレットモードで試すか、別のブラウザも試してください。私は同じ問題を抱えていました。Cookieに触れていないと、これが起こりました。Windows のパスワード変更とシステムの復元を組み合わせて実行したことが問題の原因であることがわかりました。非常識..

于 2015-05-29T14:00:27.653 に答える