Sto cercando di rendere possibile per l'utente di scaricare un foglio di calcolo di Excel dal nostro sito, di avere un pulsante che reindirizza attraverso questo:download di un file tramite HTTPS in IE8, utilizzando ASP.NET
Response.Redirect(string.Format("../excel/ExcelForm.aspx?pathName=&fileNameDisplay={0}&fileNameUnique={1}", "spreadsheet.xls", fileName));
la pagina aspx invia appena tornato il file tramite l'oggetto Response, in questo modo:
Response.ContentType = "application/vnd.ms-excel";
Response.AddHeader("Content-Disposition", "attachment; filename=" + fileNameDisplay);
Response.WriteFile(Server.MapPath(pathName + fileNameUnique));
Response.Flush();
Response.End();
Tutto funziona bene sulla mia macchina, ma quando stiamo mettendo sul server, i https in combinazione con no- le impostazioni della cache ci danno un errore che dice "Internet Explorer non può scaricare [blahblahblah]". Le impostazioni della cache nella pagina che mostrano il pulsante excel:
HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.NoCache);
HttpContext.Current.Response.ExpiresAbsolute = DateTime.Now.AddDays(-1);
HttpContext.Current.Response.Expires = 0;
HttpContext.Current.Response.AddHeader("Pragma", "no-cache");
HttpContext.Current.Response.AddHeader("cache-control", "private, no-cache, must-revalidate no-store pre-check=0 post-check=0 max-stale=0");
HttpContext.Current.Response.Cache.SetNoServerCaching();
Quando rimuovo quelle linee, tutto funziona perfettamente. Tuttavia, non sono autorizzato a rimuoverli per altri motivi. Così ho provato ad aggiungere la seguente riga al ExcelForm.aspx appena prima che aggiunge roba per l'intestazione:
Response.ClearHeaders();
che dà solo a me "Internet Explorer non può scaricare ExcelForm.aspx da [url]". Ed è lì che sono bloccato. Suggerimenti?
computer dice sì! –
Possedere \ o /. Ha funzionato come un fascino \ o/ –