Asp.Net Отправка PDF в браузер - PullRequest
       23

Asp.Net Отправка PDF в браузер

2 голосов
/ 10 апреля 2009

Я пытался заставить эту страницу aspx подать pdf. В Firefox он работает правильно, но IE выдает

Internet Explorer не может загрузить getform.aspx с SERVER_NAME
Internet Explorer не смог открыть этот интернет-сайт. Запрашиваемый сайт недоступен или не найден.

Это общая функциональность моего кода. Он распространяется на несколько функций (именно поэтому мы не используем WriteFile - иногда мы генерируем pdf на лету), но обычно это так:

FileStream fs = File.Open(Path.Combine(PdfBasePath, "form.pdf"), FileMode.Open, FileAccess.Read);
Stream output = Response.OutputStream;

byte[] buffer = new byte[BUFFER_SIZE];
int read_count = fs.Read(buffer, 0, BUFFER_SIZE);
while (read_count > 0)
{
    output.Write(buffer, 0, read_count);
    read_count = fs.Read(buffer, 0, BUFFER_SIZE);
}

fs.Close();

Response.Clear();
Response.ContentType = System.Net.Mime.MediaTypeNames.Application.Pdf;
Response.AddHeader("Content-Disposition", "attachment; filename=form.pdf");
Response.Output.Flush();
Response.End();

Глядя на Fiddler, страница выбирается с помощью этого:

GET /getform.aspx?Failure=Y&r=someencryptedstring HTTP / 1.1

Возвращается в браузер таким образом:

HTTP / 1.1 200 OK
Дата: четверг, 09 апреля 2009 г. 22:08:33 GMT
Сервер: Microsoft-IIS / 6.0
X-Powered-By: ASP.NET
X-AspNet-версия: 2.0.50727
Прагма: без кеша
Содержание-Диспозиция: вложение; имя файла = form.pdf
Cache-Control: без кеша, без хранилища
Прагма: без кеша
Истекает: -1
Тип контента: приложение / pdf
Длина контента: 628548

Это действительно беспокоит меня. Я не использую SSL, в противном случае эта статья базы знаний , похоже, применима. У кого-нибудь есть идеи?

1 Ответ

1 голос
/ 10 апреля 2009

Правильно ли возвращается длина содержимого в заголовке для файла, который вы отправляете? Я просто сравниваю это с некоторым рабочим кодом, который мы здесь используем, и похоже, что мы явно установили заголовок Content-Length. Если я правильно помню, в некоторых браузерах возникают проблемы, если заголовок и фактический размер файла не совпадают.

Редактировать Автор вопроса обнаружил, что изменение заголовка Content-Disposition на application / download вместо application / pdf, похоже, решает проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...