Tengo una página aspx simple donde está el código subyacente. Estoy creando un archivo zip y transmitiéndolo de vuelta. Todo funcionó bien mientras mantuve todo mi código dentro del método page_load. Ahora estoy ejecutando el código con un clic de botón. Después de la descarga, Windows no puede abrir el zip diciendo que no es válido. Aquí está mi código:
<body style="height: 100%; overflow: hidden" onload="return onBodyLoad();"> <script> function onBodyLoad() { document.getElementById("ExportBtn").click(); } </script> protected void ExportBtn_OnClick(object sender, EventArgs e) { // prepare zip ..... // send zip back Response.Clear(); Response.AppendHeader("content-disposition", "attachment; filename=" + fileToDownload); Response.ContentType = "application/zip"; Response.BinaryWrite(File.ReadAllBytes(zipPath)); }El mismo código sin hacer clic en un botón funciona bien desde page_load, que actualmente se ve así:
protected void Page_Load(object sender, EventArgs e) { }Encontré el problema. Todo lo que necesitaba es Response.End(); como última declaración.