ASP.NET - 难以修改Http标头

时间:2012-05-22 20:58:42

标签: asp.net asp.net-mvc http-headers httpresponse

我已经在ASP.NET MVC中工作了一段时间,但有一件令我困惑的事情是修改HTTP Headers所涉及的困难。 添加标题(Response.AppendHeader(...);)非常简单,删除所有标题非常(几乎Response.ClearHeaders();)。但是,当涉及修改和删除个人标题时,就会出现问题。

http头集合背后的技术原因是什么(基本上)是一个简单的Dictionary<string, string>被写入响应流?为什么删除所有人是如此容易,但是不可能删除个人?

注意 - 我不仅关心在服务器上运行它(使用IIS 7,集成管道模式),还在开发中(使用Cassini)。

1 个答案:

答案 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属性公之于众,以及它背后的想法是什么。我认为它应该至少受到保护,因为幕后有其他逻辑,在某些情况下,该过程不仅限于简单的数组项插入。