2012-02-20 69 views
6

Aparece un error (el servidor no puede establecer el tipo de contenido después de que se hayan enviado encabezados HTTP) en el siguiente código (línea ContentType). ¿Qué debería cambiar?Servidor no puede establecer el tipo de contenido después de que se enviaron encabezados HTTP

System.Web.HttpResponse response = System.Web.HttpContext.Current.Response; 
response.ClearContent(); 
response.ContentType = "text/plain"; 
response.AddHeader("Content-Disposition", "attachment; filename=" + System.IO.Path.GetFileName(PervasiveConstants.DownloadZipLocation) + ";"); 
response.TransmitFile(PervasiveConstants.DownloadZipLocation); 
response.Flush(); 
response.End(); 

Esto se encuentra dentro de un elemento web Sharepoint 2010.

+1

este es el "problema" general para todos los servidores. Una vez que el programa comienza a generar contenido, los encabezados deben enviarse al cliente y no pueden modificarse. Para establecer encabezados en cualquier lugar de Programm, debe habilitar el almacenamiento en búfer de salida o algo así. Se llama "buffer de salida" en Apache/php, pero debería haber algo similar en otros servidores. – kirilloid

+1

¿Por qué comienzas con 'ClearContent'? Si la respuesta ya * tiene * contenido, entonces su código probablemente se está ejecutando demasiado tarde en el proceso. –

Respuesta

5

intente configurar response.BufferOutput = true;. Haga esto inmediatamente después de establecer la variable response.

+1

que utilizan ** respuesta System.Web.HttpResponse = System.Web.HttpContext.Current.Response; ** ** Response.BufferOutput = true; ** Pero sigo teniendo el mismo error. –

1

Tuve un problema muy similar a este en un formulario web. He resuelto este problema agregando el siguiente código al botón en el código detrás:

ScriptManager.GetCurrent(this).RegisterPostBackControl(btnPrint); 
-1

que tenían el mismo problema y la solución después de resuelto el problema, ejecutar un response.ClearHeaders(); antes de plazo response.AddHeader(

0

Esta solución trabajado para mí, agregar esta línea de código en el inicio del método,

Server.ClearError(); 
Cuestiones relacionadas