我已经在ASP.NET MVC中工作了一段时间,但有一件令我困惑的事情是修改HTTP Headers所涉及的困难。 添加标题(Response.AppendHeader(...);
)非常简单,删除所有标题非常(几乎太) Response.ClearHeaders();
)。但是,当涉及修改和删除个人标题时,就会出现问题。
http头集合背后的技术原因是什么(基本上)是一个简单的Dictionary<string, string>
被写入响应流?为什么删除所有人是如此容易,但是不可能删除个人?
注意 - 我不仅关心在服务器上运行它(使用IIS 7,集成管道模式),还在开发中(使用Cassini)。
答案 0 :(得分:0)
对于.Net Framwork 3.0,IIS 7.0 /集成模式:
如您所见,
Response
对象有
Headers
输入为NameValueCollection的属性(我不确定为什么选择了这种类型) http://msdn.microsoft.com/en-us/library/system.web.httpresponse.headers
因此,从理论上讲,您可以使用它来添加或删除您在问题中列出的标题中的标题。
正如我从Response.AddHeader源代码(我使用过Reflector)中看到的那样,几乎没有其他检查。例如,如果您在调用“Flush”方法后尝试添加处理程序,则该方法将抛出异常(如果您考虑这是正确的行为)。 我不确定为什么微软的公司将Headers属性公之于众,以及它背后的想法是什么。我认为它应该至少受到保护,因为幕后有其他逻辑,在某些情况下,该过程不仅限于简单的数组项插入。