2011-04-13 35 views
24

ASP.Net 4.0を使用しています。私たちのコードでは、定期的にResponse.AddHeader("x", "y")を使用しています。これは正確にResponse.AppendHeader("x", "y")と同じですか? AppendHeaderは従来のASPとの互換性のためにのみ存在していますが、これは使用しません。AppendHeaderはAddHeaderとまったく同じですか?

私たちは、懸念することなく、AddHeaderをAppendHeaderで置き換えることはできますか?

答えて

28

これらは同じですので、HttpResponse.AddHeaderHttpResponse.AppendHeaderに置き換えることができます。 MSDN

のaddHeaderから

はAppendHeader と同じであり、唯一のASPの旧バージョンとの互換性 ために設けられています。 ASP.NETでは、AppendHeaderを使用します。

Reflectorとの迅速なPEEKはHttpResponse.AddHeaderがちょうどHttpResponse.AppendHeaderを呼び出すことを確認。

11

これらは同じではありません(少なくとも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 
+1

私はページ上で試してみましたが、両方とも同じ結果に 'a:b、c'を与えます。 – Aximili

+1

aspxページは異なる動作をするかもしれません。私の非常に最初の行は、 "少なくともHttpListenerContextのために"私は他の人、ページ、Webサービス、Web APIなどをチェックしていない、少しずつ異なる動作をする可能性があります。 System.Web.HttpResponseはSystem.Net.HttpListenerContextとは異なります。異なる名前空間。私の答えは、私が言うことができる「認識」のためのものでしたか? –

+0

私が知っているのは、私が特に「ページ上で」と述べたのは、追加の情報のためだけです:)(私は最初はページ上で同じであると思っていましたが、 – Aximili

関連する問題