Невозможно загрузить файлы с веб-страницы с шифрованием SSL в IE8 + - нельзя изменять заголовки в ASP.NET

Мне ужасно трудно заставить веб-страницу работать, и я действительно могу помочь. Страница обслуживается через IIS 7 с включенным SSL. На нем пользователь может загрузить документ .rtf или .zip из нескольких файлов .rtf. Это отлично работает в FF и Chrome, но как только IE вводится, конечный пользователь получает всплывающее окно со следующей ошибкой:

Невозможно открыть этот Интернет-сайт. Запрошенный сайт либо недоступен, либо не может быть найден. Пожалуйста, повторите попытку позже.

Используя Fiddler, я вижу, что для заголовка Cache-Control установлено значение No-cache, а для Pragma также установлено значение no-cache. По данным нескольких форумов и блогов, это заставляет IE запрещать загрузку файлов со страницы.

Я попытался изменить заголовки в коде ASP.NET следующим образом:

Response.AppendHeader("Pragma", "public");
Response.AppendHeader("Cache-Control", "must-revalidate, 
    post-check=0, pre-check=0");
Response.AppendHeader("Cache-Control", "public");

и это:

Response.Cache.SetExpires(DateTime.Now.AddSeconds(60));
Response.Cache.SetCacheability(HttpCacheability.Public);
Response.Cache.SetMaxAge(TimeSpan.FromMinutes(1));
Response.Cache.SetValidUntilExpires(true);

ни один из которых не работает. Заголовки по-прежнему не кешируются.

Затем я попытался добавить пользовательские модификации заголовков на веб-сайт через модуль заголовков ответа HTTP IIS, но это тоже не сработало.

Эта ветка подходит к ответу на мой вопрос, но не указывает, как они смогли переписать заголовки.

Я буду очень признателен за любую помощь, которую вы мне можете оказать, поскольку я выдергиваю то, что осталось от моих волос.


person SupportSquid    schedule 03.02.2012    source источник
comment
попробуйте: Response.CacheControl = public или Response.CacheControl = private   -  person Aristos    schedule 03.02.2012
comment
К сожалению, это тоже не работает. Заголовок по-прежнему отображается как «Cache-Control: no-cache».   -  person SupportSquid    schedule 03.02.2012


Ответы (2)


Вот ссылка на ту же проблему, что и у меня. За исключением того, что у меня он был с .pdf. Фактически это применимо ко всем типам статических файлов.

IE8 и кэширование на стороне клиента

person Etch    schedule 03.02.2012
comment
Как видно из второго блока кода, опубликованного выше, я уже пробовал использовать в своем коде методы SetCacheability и SetMaxAge. Однако они не работают. Это моя проблема. Я не могу изменить заголовки, что бы я ни вставлял в программный код. - person SupportSquid; 04.02.2012
comment
Мне любопытно, есть ли в вашем web.config что-нибудь для кеширования или, возможно, httphandler / httpmodule. Эти вызовы обязательно должны переписать заголовок. Здесь играет еще кое-что. - person Etch; 04.02.2012
comment
Спасибо за эту идею. Сайт работает на DotNetNuke. Администратор установил в настройках хоста отключение кеширования для всего сайта. Я не знал, что это сделала DNN. Еще раз спасибо. - person SupportSquid; 04.02.2012

На него уже ответили, но я подумал, что добавлю еще один ответ, который мне помог.

Поскольку вы используете IIS 7, вы можете использовать

Response.Headers.Remove("Pragma")

чтобы удалить заголовок Pragma. Метод AppendHeader не переопределяет какие-либо ранее существовавшие заголовки, включая другие заголовки Pragma, поэтому «Pragma: no-cache» все еще присутствует. Теперь, с IIS 7, вы можете удалить его.

Если у вас нет IIS 7 или ваш локальный компьютер настроен для запуска IIS 6, даже если у вас есть IIS 7, как и у меня, вы получите исключение «Эта операция требует режима интегрированного конвейера IIS». Просто убедитесь, что вы используете IIS 7, и все будет хорошо.

person Travis    schedule 05.08.2013