Меня попросили выполнить требование безопасности, которое мы поручаем браузерам не кэшировать важные данные. Это все хорошо для содержания ASPX, используя стандартные инструкции:IE, не показывающий файлы PDF с кэшированием отключен
Response.Expires = -1;
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetNoStore();
Однако, когда я установил эти заголовки для загрузки PDF, IE8 не будет показывать PDF (не пробовал другие версии IE еще, своего рода спорно, Мне нужно, чтобы он работал над всеми из них, даже IEfreaking6). Кажется, работает в firefox 4 beta, но я не дважды проверял, что он определенно не кэширует его. Вот сокращенная версия кода, я использую, чтобы служить PDF-файлов:
Response.Clear();
Response.ClearHeaders();
Response.ClearContent();
Response.Buffer = true;
//This stops the PDFs from being viewed :(
//Response.Expires = -1;
//Response.Cache.SetCacheability(HttpCacheability.NoCache);
//Response.Cache.SetNoStore();
Response.ContentType = mime;
Response.AddHeader("Content-Disposition", disposition);
Response.BinaryWrite(file);
Response.End();
Где в случае PDF-файлов типа мим установлено значение:
private const string mimeTypePDF = "application/pdf";
Диспозиция устанавливается на:
var disposition = String.Format("{0};filename=\"{1}\"", SendInline ? "inline" : "attachment", Path.GetFileName(filename));
Я буду играть вокруг немного больше, может заставить их загрузить в MimeType «приложение/октет-поток» может работать, но это было бы остановить хорошую открытый PDF-е в новом окне браузера от за работой.
Неужели кто-нибудь имел успех с тем, чтобы IE не кэшировал PDF-файлы со стороны сервера и успешно отображал их?
Просто, чтобы дать яркий пример о том, что происходит. В одном сценарии пользователь может выбрать группу отчетов из списка, они скомпилированы в PDF, а PDF - в новом окне браузера. Когда кеширование включено, открывается окно браузера, но остается решительно пустым.
См. Также: http://forums.asp.net/p/1630929/4207658.aspx/1?Re+https+pdf+problems+ – jamiebarrow