发送HTTP标头后,ASP.NET Server无法修改cookie

时间:2014-12-01 09:50:40

标签: asp.net cookies webforms

我们有一个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.BufferResponse.BufferOutput设置为true

1 个答案:

答案 0 :(得分:1)

你得到的错误是非常自我解释的。您的代码会在设置响应后尝试添加/修改Cookie。

您需要浏览代码并检查编写Cookie的部分。

即使您的代码在第一眼看上去没问题,也请确保在编写Cookie之前没有加载async个内容。

您的帖子表明此错误是随机发生的,因此很可能是与async相关的问题。这是一种竞争情况:有时候async在创建cookie之前就完成了,但有时候它没有完成,因此是随机错误。