【问题标题】:Server cannot append header after HTTP headers have been sent发送 HTTP 标头后服务器无法附加标头
【发布时间】:2011-09-13 18:43:57
【问题描述】:

我在我的 asp.net c# web 应用程序中间歇性地收到此异常:

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

它是由应用程序在页面发送后将内容附加到页面响应标头引起的。我不知道为什么它是间歇性的,但我需要做的是在修改标题之前执行检查以检查页面是否已发送。

有谁知道我怎样才能做到这样的检查?

【问题讨论】:

  • 在调用一些 Response.BufferOutput = false 的页面时,我得到了同样的错误。删除它可以解决问题。

标签: c# asp.net http-headers httpresponse


【解决方案1】:

有两种方法:

  1. 订阅HttpApplicationPreSendRequestHeaders 并假设此时标头已发送。在上下文上设置一个标志并在任何地方检查它

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

【讨论】:

  • 感谢您的回复。我认为选项1是最好的。这是可以在 http 响应中设置 cookie 和 http 标头的最后一点吗?
  • 正如事件的名称所说,它发生在标头发送之前。这是您仍然可以设置标题的最晚时间
猜你喜欢
  • 2011-02-21
  • 2023-03-08
  • 2015-07-01
  • 1970-01-01
  • 2012-01-20
  • 1970-01-01
  • 1970-01-01
  • 2011-06-02
  • 2016-03-20
相关资源
最近更新 更多