在我注意到我的代码可能运行在以经典模式设置的服务器上之前,我使用的是Response.Header.Add()。在这种情况下,异常“此操作需要IIS集成管道模式”。已经长大了。
我切换到Response.AddHeader()来解决我的问题。这个函数看起来更老了,但它并不是不推荐的。我想知道,您认为在Response.Header.Add()之上使用Response.AddHeader()有什么原因吗?你能解释一下吗?
发布于 2014-03-19 14:09:13
Response.AddHeader()是一个更老的方法,面向IIS6。Response.AddHeader为您提供了一种向响应标头集合添加自定义标头的基本方法,但实际上并没有为您提供一种以其他方式操作集合的方法(例如,您不能从集合中删除一个标头--尽管您可以使用Response.ClearHeaders()清除它们)。Response.Header.Add()是较新的,需要集成管道模式才能工作,只有在IIS7和以后的版本中才支持.
“Header属性仅受IIS7.0集成管道模式和至少.NET Framework3.0的支持。当您尝试访问Header属性而这两种条件中的任何一种不满足时,将引发PlatformNotSupportedException。”
我的理解是,IIS6使用ASAPI来调用.Net,从而有效地限制了如何处理响应头之类的内容。使用IIS7集成模式,“将ASP.NET请求管道与IIS核心请求管道相结合的统一请求处理管道”,为在请求/响应生命周期内工作提供了更大的灵活性.
这里有几个链接,可以帮助您照亮主题- 将ASP.Net应用程序从IIS6.0移动到IIS7.0和每个ASP.NET开发人员都应该知道的IIS管道中的HTTP请求生命周期事件。
我希望这能帮上忙!
https://stackoverflow.com/questions/22204157
复制相似问题