2011-04-13 12 views
24

Używamy ASP.Net 4.0. W naszym kodzie regularnie używamy Response.AddHeader("x", "y"). Czy to jest dokładnie to samo co Response.AppendHeader("x", "y")? Czytałem, że AppendHeader istnieje tylko dla kompatybilności z klasyczną ASP, której nie używamy.Czy AppendHeader jest dokładnie taki sam jak AddHeader?

Czy możemy bez obaw wymienić AddHeader na AppendHeader?

Odpowiedz

28

Są takie same, więc tak, można zastąpić HttpResponse.AddHeader przez HttpResponse.AppendHeader.

Od MSDN

AddHeader jest taka sama jak AppendHeader i podane są jedynie dla kompatybilności z wcześniejszymi wersjami ASP. Za pomocą ASP.NET użyj AppendHeader.

Szybkie zerknięcie z Reflector potwierdza, że ​​HttpResponse.AddHeader po prostu wywołuje HttpResponse.AppendHeader.

11

Nie są one takie same (przynajmniej dla HttpListenerContext).

Tutaj jest test:

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

Wynikiem jest:

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

I teraz tak:

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

Wynikiem jest:

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

Próbowałem go na stronie i obaj dają taki sam wynik: "a, b, c' – Aximili

+1

strony aspx mogą zachowywać się w różny sposób. Moja pierwsza linijka mówi "przynajmniej dla HttpListenerContext" Nie sprawdzałem innych, stron, serwisów internetowych, web api itd., Mogą zachowywać się nieco inaczej od siebie. System.Web.HttpResponse jest inny niż System.Net.HttpListenerContext. Różne obszary nazw. Moja odpowiedź była bardziej na "świadomość", którą mogłem powiedzieć? –

+0

Wiem, dlatego specjalnie wspomniałem "na stronie", tylko po dodatkowe informacje :) (coz Początkowo sądziłem, że na stronach będzie to samo, ale tak nie jest) – Aximili

Powiązane problemy