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

NLe*_*may 3 c# iis response.addheader

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

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

mat*_*ell 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核心请求管道相结合的统一请求处理管道",在请求/响应生命周期内提供更大的灵活性...

以下是一些可能有助于为您阐明主题的链接 - 将ASP.NET 6.0中的ASP.Net应用程序移动到IIS 7.0和IIS管道中的HTTP请求生命周期事件,每个ASP.NET开发人员都应该知道.

我希望这个对你有用!