Estoy exportando una vista de cuadrícula a excel, usando .Net 4.0 en una aplicación web, carga de página y necesidad de generar el archivo y luego la página para ser redirigido a la página de llamadas. Estoy corriendo en problemas porque mi código para exportar a Excel es la siguiente:Redireccionando a otra página después de que Response.End() ha sido llamado en C#
gvSummary.Style.Add("font-size", ".6em");
Response.Clear();
string attachment = "attachment; filename=filename.xls";
Response.ClearContent();
Response.AddHeader("content-disposition", attachment);
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
StringWriter sw = new StringWriter();
HtmlTextWriter htw = new HtmlTextWriter(sw);
gvSummary.GridLines = GridLines.Horizontal;
gvSummary.RenderControl(htw);
Response.Write(sw.ToString());
Response.End();
Sé que si pongo el Response.Redirect() antes de la .End(), me redirecciona pero el archivo se nunca se generó, y si pongo el Response.Redirect() después de .End() obtengo el archivo pero no hay redirección.
El código escrito anteriormente funciona bien para generar el archivo, sin embargo, cuando se genera el archivo, sigo atascado al ver mi animación de carga porque no puedo salir de la página. ¿Algunas ideas?
Dado que el resultado de la solicitud es un archivo xls y no html, ¿realmente funcionará? –
Creo que sí. porque antes que nada HTTP se usa para entregar respuestas. En este caso, el paquete HTTP se ve como un conjunto de encabezados seguido de datos binarios (archivo xls). En algunos casos, además, será necesario establecer el tipo contnt para application/octet-stream, pero depende del tipo de resultado que necesitemos – ILya
No funcionó, cargaría el archivo pero no redirigiría ... – EvanGWatkins