Я пытаюсь ответить клиенту с PDF, хранящимся в поле MSSQL varbinary (MAX). Ответ работает на моем локальном хосте и тестовом сервере по http-соединению, но не работает на рабочем сервере через соединение https. Я использую просто BinaryWrite (код ниже).C# BinaryWrite через SSL
byte[] displayFile = DatabaseFiles.getPdfById(id);
Response.ContentType = "application/pdf";
Response.BinaryWrite(displayFile);
Ничего особенного здесь. Просто возьмите двоичные данные, установите тип содержимого и напишите обратно клиенту. Есть ли что-то особенное, что нужно сделать для того, чтобы ответить на https таким образом?
Редактировать: Не работает, я имею в виду, что я получаю пустой документ в браузере. Acrobat не загружается в браузере.
Редактировать: Я только заметил, что эта проблема возникает только в IE 7. PDF загружается правильно в Firefox 3. Наш клиент использует только IE 7 (лучше IE 6, который я убедил их в обновлении от ... lol).
Редактировать: Попытался добавить заголовок «content-disposition», чтобы файл работал как вложение. Браузеру не удалось загрузить под 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);
Edit: Если файл рассматривается через HTTP на производственном сервере, браузер отображает код для PDF, как это было просматриваемого через NotePad. (например,% PDF-1.4% âãÏÓ 6 0 obj <> endobj xref 6 33 ... и т. д.)
Определить, что «не работает». Исключения? Неверный выход? – 2008-12-10 15:57:03
Проверьте правильность ответа на вопрос. – Eddie 2008-12-10 16:11:10