2011-04-13 12 views
24

Utilizziamo ASP.Net 4.0. Nel nostro codice usiamo regolarmente Response.AddHeader("x", "y"). È esattamente lo stesso di Response.AppendHeader("x", "y")? Ho letto che AppendHeader esiste solo per compatibilità con ASP classico, che non usiamo.AppendHeader è esattamente uguale a AddHeader?

Possiamo, senza problemi, sostituire AddHeader con AppendHeader?

risposta

28

Sono uguali, quindi sì, è possibile sostituire HttpResponse.AddHeader con HttpResponse.AppendHeader.

Da MSDN

AddHeader è lo stesso di AppendHeader e viene fornita solo per compatibilità con le versioni precedenti di ASP. Con ASP.NET, utilizzare AppendHeader.

Una sbirciatina veloce con Reflector conferma che HttpResponse.AddHeader solo chiamate HttpResponse.AppendHeader.

11

Non sono uguali (almeno per HttpListenerContext).

Ecco il test:

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

Il risultato è:

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

E ora in questo modo:

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

Il risultato è:

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

L'ho provato su una pagina ed entrambi danno lo stesso risultato 'a: b, c' – Aximili

+1

aspx pages può comportarsi in modo difforme. La mia prima riga dice "almeno per HttpListenerContext" Non ho controllato per altri, pagine, servizi web, web api e così via, potrebbe comportarsi in modo leggermente diverso l'uno dall'altro. System.Web.HttpResponse è diffrent rispetto a System.Net.HttpListenerContext. Spazio dei nomi diverso La mia risposta era più per "consapevolezza" che potrei dire? –

+0

Lo so, è per questo che ho menzionato specificamente "su una pagina", solo per ulteriori informazioni :) (perchè ho pensato che inizialmente sarebbe stato lo stesso sulle pagine, ma non lo è) – Aximili