Это может быть .NET версия этот вопрос .
У меня есть скрипт изображения со следующим:
...
Response.WriteFile(filename);
Response.End();
Я переписываю файлы .jpg, используя следующее правило перезаписи в web.config
:
<rule name="Image Redirect" stopProcessing="true">
<match url="^product-images/(.*).jpg" />
<conditions>
<add input="{REQUEST_URI}" pattern="\.(jp?g|JP?G)$" />
</conditions>
<action type="Rewrite" url="/product-images/ProductImage.aspx?path=product-images/{tolower:{R:1}}.jpg" />
</rule>
Он просто переписывает путь изображения в параметр запроса.
Проблема в том, что (периодически, конечно) Mosso возвращает новый файл cookie Session ASP, который разрушает весь мир.
- Непосредственный доступ к статическому файлу .jpg не вызывает этой проблемы.
- Прямой доступ к сценарию изображения также не вызывает его.
- Только перезапись файла .jpg в сценарий .aspx приводит к потере сеанса.
Это не цикл перенаправления - изображение появляется, но сервер кэша отправляет новый файл cookie сеанса, который (поскольку он исходит от моего имени хоста) вызывает сброс сеанса.
Вещи, которые я пробовал
(из документации Rackspace Как обойти кеш? )
Я добавил Private
кешируемость к самому сценарию изображения:
Response.Cache.SetCacheability(HttpCacheability.Private);
Я попытался добавить эти отключающие кеш узлы в web.config:
<staticContent>
<clientCache cacheControlMode="DisableCache" />
</staticContent>
и
<httpProtocol>
<customHeaders>
<add name="Cache-Control private" value="Cache-Control private"
</customHeaders>
</httpProtocol>
Решение, которое мне нужно
Кеш браузера не может быть отключен. Это означает, что потенциальные решения с участием Cache.SetNoStore()
или HttpCacheability.NoCache
не будут работать.
С другой стороны ...
Скажите, пожалуйста, почему это невозможно исправить?