【问题标题】:Is AppendHeader exactly the same as AddHeader?AppendHeader 是否与 AddHeader 完全相同?
【发布时间】:2011-04-13 11:24:22
【问题描述】:

我们使用 ASP.Net 4.0。在我们的代码中,我们经常使用Response.AddHeader("x", "y")。这和Response.AppendHeader("x", "y")完全一样吗?我读到 AppendHeader 的存在只是为了与我们不使用的经典 ASP 兼容。

我们可以不用担心,用 AppendHeader 替换 AddHeader 吗?

【问题讨论】:

    标签: asp.net


    【解决方案1】:

    它们是相同的,所以是的,您可以将 HttpResponse.AddHeader 替换为 HttpResponse.AppendHeader

    来自MSDN

    AddHeader 与 AppendHeader 相同 并且仅出于兼容性而提供 与早期版本的 ASP。和 ASP.NET,使用 AppendHeader。

    快速查看Reflector 确认HttpResponse.AddHeader 只是调用HttpResponse.AppendHeader

    【讨论】:

      【解决方案2】:

      它们不一样(至少对于HttpListenerContext)。

      这是测试:

      ctx.Response.AddHeader("a", "b");
      ctx.Response.AddHeader("a", "c");
      

      结果是:

      HTTP/1.1 200
      Server: Microsoft-HTTPAPI/2.0
      a: c
      Date: Mon, 12 Nov 2012 16:42:01 GMT
      

      现在是这样的:

      ctx.Response.AddHeader("a", "b");
      ctx.Response.AppendHeader("a", "c");
      

      结果是:

      HTTP/1.1 200
      Server: Microsoft-HTTPAPI/2.0
      a: b
      a: c
      Date: Mon, 12 Nov 2012 16:53:29 GMT
      

      【讨论】:

      • 我在一个页面上尝试过,它们都给出了相同的结果a: b, c
      • aspx 页面的行为可能不同。我的第一行说“至少对于 HttpListenerContext”我没有检查其他人、页面、Web 服务、Web api 等等,它们的行为可能彼此略有不同。 System.Web.HttpResponse 与 System.Net.HttpListenerContext 不同。不同的命名空间。我的回答更多是为了我可以说的“意识”?
      • 我知道,这就是为什么我特别提到“在页面上”,只是为了提供更多信息 :)(因为我最初认为页面上会是相同的,但事实并非如此)
      猜你喜欢
      • 2020-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-21
      • 2010-09-21
      • 2012-07-16
      • 1970-01-01
      • 2021-01-21
      相关资源
      最近更新 更多