Я динамически генерирую Zip-файл на странице ASP.NET, а затем отправляю поток в Response.Поток файла в ASP.NET работает в Firefox, но не в Internet Explorer
В Firefox я могу скачать файл с именем Images.zip
. Он работает правильно. В Internet Explorer 7 он пытается загрузить файл с именем ZipExport.aspx
или если он находится в общем обработчике ZipExport.ashx
, и он говорит, что он не может быть найден на сервере и не работает.
Вот мой код:
Response.BufferOutput = true;
Response.ClearHeaders();
Response.ContentType = "application/octet-stream";
Response.AddHeader("content-disposition", "attachment; filename=Images.zip");
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetNoServerCaching();
Response.Cache.SetNoStore();
Response.Cache.SetMaxAge(System.TimeSpan.Zero);
ZipFile zip = new ZipFile();
zip.AddFile(Server.MapPath("sample1.png"));
zip.Save(Response.OutputStream);
Я не хочу, чтобы сделать HttpHandler для определенного файла и зарегистрировать его с IIS.
Есть ли что-то простое, что мне не хватает или Internet Explorer по ошибке за игнорирование моего заголовка содержимого?
Edit: я удалил эти строки и все работало:
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetNoStore();
Edit: Вот рабочий код, если кому-то интересно:
public void ProcessRequest(HttpContext context)
{
context.Response.Clear();
context.Response.BufferOutput = false;
context.Response.ContentType = "application/octet-stream";
context.Response.AddHeader("content-disposition",
"attachment; filename=ChartImages.zip");
context.Response.Cache.SetNoServerCaching();
context.Response.Cache.SetMaxAge(System.TimeSpan.Zero);
using(ZipFile zip = new ZipFile())
{
zip.AddFile(context.Server.MapPath("sample1.png"));
zip.Save(context.Response.OutputStream);
}
context.ApplicationInstance.CompleteRequest();
}
В качестве побочной проблемы вы можете установить BufferOutput в false. – RichardOD
действительно ли fiddler дает вам любую информацию по этой проблеме? – BigBlondeViking