Html.AntiForgeryToken在新安装的Visual Studio上抛出错误“服务器无法在发送了HTTP标头后修改cookie”。
Html.AntiForgeryToken在新安装的Visual Studio上抛出错误“服务器无法在发送了HTTP标头后修改cookie”。
本周早些时候,我安装了新的Visual Studio 2019更新(16.4.2),但安装过程似乎导致我的安装出现问题。我不断遇到类似的错误,只是错误文本中提到的包不同。我还检查了错误中提到的日志文件,但似乎没有提供任何有用的信息。我按照这个帖子中的几乎所有答案,但没有一个能使错误停止,因此我决定卸载并重新安装Visual Studio。\n\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开发
- Azure开发
- Python开发
- .NET桌面开发
- 数据存储和处理
- Visual Studio扩展开发
- Office/SharePoint开发
- .NET Core跨平台开发
\n
\n
\n
\n
\n
\n
\n
\n