Html.AntiForgeryToken在新安装的Visual Studio上抛出错误“服务器无法在发送了HTTP标头后修改cookie”。

6 浏览
0 Comments

Html.AntiForgeryToken在新安装的Visual Studio上抛出错误“服务器无法在发送了HTTP标头后修改cookie”。

本周早些时候,我安装了新的Visual Studio 2019更新(16.4.2),但安装过程似乎导致我的安装出现问题。我不断遇到类似的错误,只是错误文本中提到的包不同。我还检查了错误中提到的日志文件,但似乎没有提供任何有用的信息。我按照这个帖子中的几乎所有答案,但没有一个能使错误停止,因此我决定卸载并重新安装Visual Studio。\n\"enter\n在重新安装Visual Studio后,我不再遇到这些错误,但现在似乎无法运行我的应用程序。因为我遇到了以下错误:\n

\nSystem.Web.HttpException: \'在发送HTTP头后,服务器无法修改cookie。\'\n

\n我查看了这个帖子,第一个答案提到了多个标签页打开的情况,但对我来说并非如此,因为我使用的是不同的浏览器进行调试,而不是主要的浏览器,并且原帖的被采纳答案并没有提供太多信息。\n我还查看了这个帖子,其中讨论了重定向,据我所知,在发生错误之前没有任何重定向,因为我遇到错误的是登录页面,这是第一个加载的页面。引发错误的代码如下:\n

    @using (Html.BeginForm("Index", "Home", FormMethod.Post, new { }))
    {
        @Html.AntiForgeryToken()
        //do stuff
    }

\n堆栈跟踪如下:\n

System.Web.HttpException
  HResult=0x80004005
  Message=在发送HTTP头后,服务器无法修改cookie。
  Source=System.Web.WebPages
  StackTrace:
   at System.Web.Helpers.AntiXsrf.AntiForgeryTokenStore.SaveCookieToken(HttpContextBase httpContext, AntiForgeryToken token)
   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_Home_Index_cshtml.Execute() in C:\fakepath\Views\Home\Index.cshtml:line 59
   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.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)
  This exception was originally thrown at this call stack:
    System.Web.HttpResponse.BeforeCookieCollectionChange()
    System.Web.HttpCookieCollection.Set(System.Web.HttpCookie)
    System.Web.Helpers.AntiXsrf.AntiForgeryTokenStore.SaveCookieToken(System.Web.HttpContextBase, System.Web.Helpers.AntiXsrf.AntiForgeryToken)
    System.Web.Helpers.AntiXsrf.AntiForgeryWorker.GetFormInputElement(System.Web.HttpContextBase)
    System.Web.Helpers.AntiForgery.GetHtml()
    System.Web.Mvc.HtmlHelper.AntiForgeryToken()
    ASP._Page_Views_Home_Index_cshtml.Execute() in Index.cshtml
    System.Web.WebPages.WebPageBase.ExecutePageHierarchy()
    System.Web.Mvc.WebViewPage.ExecutePageHierarchy()
    System.Web.WebPages.StartPage.RunPage()
    ...
    [Call Stack Truncated]

\n我想补充说,我的代码在卸载和重新安装之前是正常工作的,所以很可能我缺少了我不知道的东西,因此为了参考,我在VS Installer中安装了以下工作负载:\n

    \n

  • ASP.NET和Web开发
  • \n

  • Azure开发
  • \n

  • Python开发
  • \n

  • .NET桌面开发
  • \n

  • 数据存储和处理
  • \n

  • Visual Studio扩展开发
  • \n

  • Office/SharePoint开发
  • \n

  • .NET Core跨平台开发
  • \n

0