【发布时间】:2019-03-16 18:01:00
【问题描述】:
我们有一个 ASP.NET MVC 站点,其中包含一些旧版 Web 表单页面。最近在这些页面上的一些点击以日志中的以下错误结束:
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。
【问题讨论】:
-
这发生在哪些页面上?随机出现在所有页面上还是仅出现在某个页面上?
-
@Mihai-AndreiDinculescu 在剩下的几个网络表单页面上。
-
这个错误是不言自明的。您拥有的 Web 表单页面必须以 MVC 管道不同意的形式编写 cookie。除非您向我们展示更多代码,否则我们无法提供帮助。
-
@Mihai-AndreiDinculescu 我很困惑堆栈不包含任何用户代码,所以我无法想象哪个代码会导致错误。
-
查看代码并查看 cookie 的设置位置应该不难。