2011-04-13 22 views
24

Usamos ASP.Net 4.0. En nuestro código usamos regularmente Response.AddHeader("x", "y"). ¿Es exactamente igual que Response.AppendHeader("x", "y")? Leí que AppendHeader solo existe para compatibilidad con ASP clásico, que no usamos.¿Es AppendHeader exactamente lo mismo que AddHeader?

¿Podemos, sin ninguna preocupación, reemplazar AddHeader con AppendHeader?

Respuesta

28

Son lo mismo, entonces sí, puede reemplazar HttpResponse.AddHeader con HttpResponse.AppendHeader.

De MSDN

AddHeader es la misma que AppendHeader y se proporciona sólo para compatibilidad con versiones anteriores de ASP. Con ASP.NET, use AppendHeader.

Un vistazo rápido con Reflector confirma que HttpResponse.AddHeader sólo llama HttpResponse.AppendHeader.

11

No son lo mismo (al menos para HttpListenerContext).

Aquí está la prueba:

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

El resultado es:

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

Y ahora así:

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

El resultado es:

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

Lo probé en una página y ambos dan el mismo resultado 'a: b, c' – Aximili

+1

las páginas aspx pueden comportarse de manera diferente. Mi primera línea dice "al menos para HttpListenerContext" No revisé para otros, las páginas, los servicios web, la API web, etc., pueden comportarse ligeramente diferentes entre sí. System.Web.HttpResponse es diferente de System.Net.HttpListenerContext. Espacio de nombres diferente Mi respuesta fue más por "conciencia" que podría decir? –

+0

Lo sé, por eso mencioné específicamente "en una página", solo para obtener información adicional :) (porque primero pensé que sería lo mismo en las páginas, pero no es así) – Aximili

Cuestiones relacionadas