服务器无法在HTTP头已发送后附加标头。

8

我在我的asp.net c#网页应用程序中偶尔会遇到这个异常:

服务器无法在HTTP标头已发送后追加标头。

这是由于应用程序在页面发送后向页面响应头附加内容。我不确定为什么它是间歇性的,但我需要在修改标题之前执行检查以检查页面是否已发送。

有人知道我如何进行这样的检查吗?


当调用一些具有 Response.BufferOutput = false 的页面时,我会收到相同的错误。移除该行代码可以解决这个问题。 - bertasoft
1个回答

11
有2种方法可以实现:
  1. 订阅HttpApplicationPreSendRequestHeaders事件,并假定在此时已发送标头。在上下文中设置一个标志,并在所有地方检查它。

  2. 不太好看的解决方案:HttpResponse有一个名为HeadersWritten的内部属性。由于它是内部的,您必须通过反射来访问它。我建议仅在调试时使用它。在所有页面生命周期事件之前/之后检查它,并找出问题所在。请勿将其保留在生产代码中。


谢谢您的回复。我认为选项1是最好的。这是在HTTP响应中设置cookie和http头的最后一点吗? - amateur
正如事件名称所示,它发生在标头发送之前。这是您仍然可以设置标头的最新时间。 - Tudor Carean

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接