2009-04-09 6 views
2

Я пытался получить эту страницу aspx для подачи в pdf. Он корректно работает в Firefox, но IE даетAsp.Net Отправка PDF в браузер

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(); 

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

GET /getform.aspx?Failure=Y & г = someencryptedstring HTTP/1,1

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

HTTP/1.1 200 OK
Дата: Чт, 9 апреля 2009 22:08:33 GMT
Сервер: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
X-AspNet- Версия: 2.0.50727
Pragma: no-cache
Content-Disposition: attachment; имя файла = form.pdf
Cache-Control: нет кэша, нет-магазин
Pragma: нет кэша
Expires: -1
Content-Type: применение/PDF
Content-Length: 628548

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

+0

Вы пытались подключиться к нескольким клиентам и, возможно, к различным версиям IE? –

+0

Да. У нас есть два сервера для тестирования: мой локальный и серийный сервер. Я тестировал с IE6, IE7, Firefox и Safari. Все работают только денди, кроме IE. Те просто волнуются. То же самое и с другими машинами. – Amy

+0

Добавлю, что неважно, появится ли в окне браузера PDF-файл или если браузер предпочитает просто загружать его пользователям HD. Либо все в порядке. Но IE этого не делает. – Amy

ответ

1

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

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

+0

Да, они совпадают. Проводник Windows сообщает размер файла 613 КБ (628 548 байт) или 616 КБ (630 784 байта) на диске. – Amy

+0

Я предполагаю, что это не так, как для файловых, так и для сгенерированных PDF-файлов, верно? Можно ли условно использовать Response.TransmitFile() для файлов, основанных на файлах, и посмотреть, что это исправляет? –

+0

Я думаю, что это URL. Я переместил код на страницу без зашифрованной строки в URL-адресе, и он работал нормально. Похоже, что IE игнорирует заголовок содержимого и использует имя страницы, включая строку запроса, как имя файла. – Amy

 Смежные вопросы

  • Нет связанных вопросов^_^