2014-12-11 5 views
0

У меня есть динамически сгенерированный файл, инициированный кнопкой на моем веб-сайте (ASP.NET).HTTP-заголовок Content Disposition filename не соблюдается

Результат записывается непосредственно в ответ, так как я не могу создавать временные файлы на сервере (также они конфликтуют, потому что имена файлов будут одинаковыми для всех запросов, но содержимое отличается в соответствии с некоторыми другими данными на страница).

Все работает отлично в IE. В Chrome это не так. Chrome использует имя страницы (допустим, Default.aspx) в качестве имени файла, независимо от того, что находится в заголовке HTTP.

Заголовок HTTP является:

HTTP/1.1 200 OK 
Cache-Control: no-cache 
Pragma: no-cache 
Transfer-Encoding: chunked 
Content-Type: application/vnd.ms-excel 
Expires: -1 
Server: Microsoft-IIS/8.0 
Content-Disposition: : attachment; filename=test.xls 
X-AspNet-Version: 4.0.30319 
X-SourceFiles: =?UTF-8?B?QzpcVXNlcnNcSWdvci5SaWJlaXJvXERvY3VtZW50c1xURlNcRXN0aW1hdGVzIGFuZCBQcm9qZWN0aW9uc1xXZWJzaXRlXFBFUFdlYlNpdGVcRGF0YVF1ZXJ5XERlZmF1bHQuYXNweA==?= 
X-Powered-By: ASP.NET 
Date: Thu, 11 Dec 2014 17:05:19 GMT 

Любое решение о том, как заставить Chrome использовать имя файла, заданное вместо имени страницы?

Если единственным вариантом является перенаправление пользователя на URL с именем файла, как бы вы предложили решение, учитывая, что имя файла одинаково для всех, но содержимое должно быть отдельным (по мере их отличия) для каждый запрос?

спасибо.

ответ

2

После Content-Disposition имеется два двоеточия. Я предполагаю, что вы добавили заголовок Content-Disposition, как это:

Response.Headers.Add("Content-Disposition:", "attachment; filename=test.xls")

, который добавляет дополнительное двоеточие.

+0

Иногда мы просто слишком много думаем и не видим, что проблема такая маленькая: D. Большое спасибо. Это определило проблему. – igorjrr