Response.Headers.Add()vs Response.AddHeader()

时间:2014-03-05 16:55:08

标签: c# iis response.addheader

在我注意到我的代码可能在经典模式下的服务器上运行之前,我正在使用Response.Header.Add()。在这种情况下,异常“此操作需要IIS集成管道模式”。被提出来了。

我切换到Response.AddHeader()来解决我的问题。此功能似乎较旧,但不会弃用。我想知道,你有没有理由在Response.AddHeader()上使用Response.Header.Add()?你能解释一下吗?

1 个答案:

答案 0 :(得分:8)

Response.AddHeader()是一种较旧的方法,面向IIS6。 Response.AddHeader为您提供了一种向Response Headers集合添加自定义标头的基本方法,但它并没有真正为您提供操作集合的方法(比如,您无法从集合中删除标题 - 尽管您可以使用Response.ClearHeaders())清除它们。 Response.Header.Add()更新,需要集成管道模式才能运行,仅在IIS7及更高版本中支持...

  

“Headers属性仅受IIS 7.0集成管道模式支持,至少支持.NET Framework 3.0。当您尝试访问Headers属性时,如果不满足这两个条件中的任何一个,则抛出PlatformNotSupportedException。” -Linky

我的理解是IIS6使用ASAPI来调用.Net,有效地限制了响应头的处理方式。使用IIS7集成模式,“将ASP.NET请求管道与IIS核心请求管道相结合的统一请求处理管道”,在请求/响应生命周期内提供更大的灵活性...

以下是一些可能有助于为您阐明主题的链接 - Moving an ASP.Net Application from IIS 6.0 to IIS 7.0HTTP Request Lifecycle Events in IIS Pipeline that every ASP.NET Developer Should Know

我希望这有帮助!