Pregunta

El siguiente código no se ejecutará correctamente en IE7 con los últimos paquetes de servicio instalados.

System.Web.HttpResponse response = System.Web.HttpContext.Current.Response;
response.Clear();
response.AddHeader("Content-Disposition", "attachment;filename=Contacts.xls");
response.ContentType = "application/octet-stream";

System.Text.UnicodeEncoding Encoding = new System.Text.UnicodeEncoding();

byte[] unicodeBytes = {255,254};
int length = 2 + Encoding.GetByteCount(_exportContent); // _exportContent is string.
response.AddHeader("Content-Length", length.ToString());
response.OutputStream.Write(unicodeBytes, 0, 2);
unicodeBytes = Encoding.GetBytes(_exportContent);
response.OutputStream.Write(unicodeBytes, 2, unicodeBytes.Length);
response.End();

Estoy abriendo la página aspx con js (window.open ()) y ejecuto el código anterior en Page_Load ().

Lo extraño es que la ventana aparece, intenta cargar / mostrar el cuadro de diálogo del archivo y luego escuchas el sonido como si se hubiera bloqueado una ventana emergente (¡aunque el bloqueador de ventanas emergentes está desactivado!).

Información adicional:
- El comportamiento se produce tanto en XP como en W2k3 (que es un servidor web real que no tiene nada más instalado que IE7 & amp; FW 3.5 SP1 & amp; los paquetes de servicio más recientes). - El mismo código funciona bien con FW 2.0 - Firefox no tiene problemas para mostrar un diálogo de archivo.

Me gustaría saber si alguien más se ha encontrado con el mismo problema y podría proporcionar una solución para que funcione en IE7.

Saludos,
Dimi

¿Fue útil?

Solución

Agregue un encabezado indicando a IE explícitamente a CACHE el archivo. IE tiene errores conocidos al no poder guardar correctamente un archivo si se envía como un archivo sin caché.

Otros consejos

Tuve el mismo problema, y ??pasé una hora completamente frustrado. Como es habitual, los navegadores de microsoft IE son la raíz de todos los dolores de cabeza. Todo funcionó bien en otros navegadores. La solución es simple: El usuario tendrá que ajustar una configuración de IE7 yendo a 'Herramientas' > 'Opciones de Internet' > Pestaña "Seguridad" > Para 'Internet' y / o 'Intranet local', ajuste la configuración de seguridad haciendo clic en el botón 'Nivel personalizado ...'

Vaya al nodo 'Descargas' '> Solicitud automática de descargas de archivos '> marque 'Habilitar'

Eso lo solucionó para mis usuarios.

Espero que ayude.

Tenía este problema en nuestra intranet, la solicitud automática de descargas no me funcionaba (ya estaba seleccionada) pero esto sí ...

Herramientas - > Opciones de Internet

En la pestaña Seguridad, seleccione & # 8216; Intranet local & # 8217; a continuación, haga clic en Sitios

Haz clic en Avanzado

Escriba & # 8220; http: //your.url.com” y haga clic en Agregar

Haz clic en Cerrar - > Ok - > Ok

espero que esto te funcione también;)

Todavía no puedo hacer que el cuadro de diálogo no desaparezca. Esto sucede cuando la aplicación accede a un [método web] para recopilar información para pasar a la página que está intentando descargar los resultados para sobresalir.

            Response.Clear();

            Response.ClearHeaders();
            Response.ClearContent();

            Response.Charset = "";
            Response.ContentType = "application/vnd.ms-excel";
            Response.AddHeader("Content-Disposition", "attachment; filename=\"" + fileNameToUse + "\"");
             Response.CacheControl = "Public";

            Response.Write(output);
            Response.Flush();
            Response.Close();

Esto también parece ocurrir cuando se accede a la sesión web utilizando una dirección IP (999.11.1.111 \ default.aspx ....). Funciona cuando se accede a través de loacalhost \ default.aspx

Para probar si la seguridad está causando este problema, establezca el objetivo en _self. Debería aparecer la barra de advertencia en la parte superior de IE. Si esta es la causa, verifique la seguridad de IE. Específicamente el aviso para la parte de descarga.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top