Я пытаюсь ответить клиенту PDF-файлом, хранящимся в поле MSSQL varbinary (MAX). Ответ работает на моем локальном хосте и тестовом сервере через соединение http, но не работает на производственном сервере через соединение https. Я использую только простой BinaryWrite (код ниже).
byte[] displayFile = DatabaseFiles.getPdfById(id);
Response.ContentType = "application/pdf";
Response.BinaryWrite(displayFile);
Ничего особенного здесь. Просто возьмите двоичные данные, установите тип содержимого и запишите клиенту. Что-нибудь особенное, что нужно сделать, чтобы ответить таким образом через https?
Редактировать: Под не работает, я имею в виду, что я получаю пустой документ в браузере. Acrobat не загружается в браузер.
Редактировать: Я только что заметил, что эта проблема возникает только в IE 7. PDF-файл корректно загружается в Firefox 3. Наш клиент использует исключительно IE 7 (лучше, чем IE 6, с которого я убедил их обновить. ..lol).
Редактировать: Попытка добавить заголовок "расположение содержимого", чтобы файл действовал как вложение. Не удалось загрузить браузер по протоколу SSL с ошибкой IE «Internet Explorer не может загрузить displayFile.aspx с ProductionServer.net». (Код ниже)
byte[] displayFile = DatabaseFiles.getPdfById(id);
Response.Clear();
Response.AddHeader("content-disposition", String.Format("attachment;filename={0}", fileName));
Response.ContentType = "application/pdf";
Response.BinaryWrite(displayFile);
Редактировать: Если файл просматривается через http на производственном сервере, браузер отображает код для PDF-файла так же, как он просматривался через Блокнот. (например,% PDF-1,4% - 6 0 obj <> endobj xref 6 33 ... и т. д.)