2009-12-08 18 views
5

Tengo una página que genera un archivo dinámico para descargar y lo envía al cliente mediante Response.BinaryWrite.Descarga de archivos ASP.NET Response.BinaryWrite bloqueados con SSL

Todo parece funcionar bien, excepto cuando lo trasladamos a un servidor de prueba con SSL. La descarga ocurre en una nueva ventana, y lo que estoy viendo (en IE7/8 pero no en Chrome o FF) es que la pestaña se abre y se cierra, pero no se muestra File Dialogue.

Aquí está la escritura cabecera completa:

Response.Clear() 
     Response.Buffer = True 
     Response.ContentType = "application/octet-stream" 
     Response.AddHeader("Content-Length", abytFileData.Length.ToString) 
     Response.AddHeader("cache-control", "private") 
     Response.AddHeader("Expires", "0") 
     Response.AddHeader("Pragma", "cache") 
     Response.AddHeader("content-disposition", "attachment; filename=""" & pMsg!pstrFileName & """") 
     Response.AddHeader("Accept-Ranges", "none") 
     Response.BinaryWrite(abytFileData) 
     Response.Flush() 
     Response.End() 

Estaba seguro de que mi problema era lo que se mencionó here,

Pero mi heade de control de caché es correcta. Alguna idea?

+0

¿Quizás duplicado? http://stackoverflow.com/questions/419868/file-download-dialog-ie7-disappears –

+0

No vi esa publicación, pero el enlace que proporcioné es similar. En su pregunta, no especificó el encabezado de control de caché como cualquier cosa, lo que estaba causando su problema. En el mío, estoy especificando el control de caché como privado, lo que debería funcionar. – Gaidin

+0

Su vencimiento: 0 o Pragma puede ser el culpable. Debes considerar eliminarlos. – EricLaw

Respuesta

2

que he encontrado el mismo problema y después de cierto grado de investigación he encontrado un artículo sobre CodeProject lo que sugiere que la descarga está siendo bloqueado por la configuración de seguridad de IE. Si va a Herramientas-> Opciones de Internet-> Pestaña Seguridad y mira las opciones de descarga para la zona a la que está accediendo, debe cambiar la opción "Solicitud automática de descargas de archivos" para que esté Activada. La configuración predeterminada de la zona "Internet" está deshabilitada. Aquí está el enlace al artículo que mencioné: http://www.codeproject.com/KB/aspnet/SecureFileDownload.aspx

+0

Sí, esta fue la misma conclusión a la que llegué también. No es muy útil porque la configuración de seguridad para las conexiones SSL está predeterminada para no forzar la solicitud de descarga, y decirle a cada uno de nuestros usuarios que cambien su configuración de seguridad no es realmente una opción. Lo que terminé haciendo fue en lugar de hacer nuestra descarga en una ventana separada, lo hice en un iframe, por lo que la advertencia desplegable de seguridad de IE estaba visible. – Gaidin

3

véase la respuesta aquí:

C# BinaryWrite over SSL

Esencialmente, reemplace:

Response.Clear(); 

con ...

Response.ClearContent(); 
Response.ClearHeaders(); 
+0

Lamento no mencionar que también intenté eso. Sin suerte. – Gaidin

1

Ha intentado cambiar o retirar su fecha de vencimiento o cabeceras Pragma ? El siguiente código funciona para mí cuando se transmite archivos PDF a través de SSL:

Response.Buffer = True 
Response.ClearContent() 
Response.ClearHeaders() 
Response.AddHeader("Cache-Control", "max-age=3") 
Response.AddHeader("Pragma", "public") 
Response.ContentType = "application/pdf" 
Response.AddHeader("Content-Disposition", "attachment; filename=file.pdf") 
Response.AddHeader("Content-Length", mem_stream.Length.ToString) 
Response.BinaryWrite(mem_stream.ToArray()) 
Response.Flush() 
Response.End() 
Cuestiones relacionadas