我们有一个ASP.NET MVC站点,其中包含一些遗留的webforms页面。最近这些页面上的一些命中以日志中的以下错误结束:
System.Web.HttpException (0x80004005): Server cannot modify cookies after HTTP headers have been sent.
at System.Web.HttpCookieCollection.Add(HttpCookie cookie)
at System.Web.HttpApplication.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
显然堆栈跟踪不包含任何用户代码。
我们无法重现错误。 GET和POST以及不同的用户代理发生错误。
Response.Buffer
和Response.BufferOutput
设置为true
。
答案 0 :(得分:1)
你得到的错误是非常自我解释的。您的代码会在设置响应后尝试添加/修改Cookie。
您需要浏览代码并检查编写Cookie的部分。
即使您的代码在第一眼看上去没问题,也请确保在编写Cookie之前没有加载async
个内容。
您的帖子表明此错误是随机发生的,因此很可能是与async
相关的问题。这是一种竞争情况:有时候async
在创建cookie之前就完成了,但有时候它没有完成,因此是随机错误。