这可能是这个问题的 .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 返回了一个新的 ASP Session cookie,它打破了整个世界。
- 直接访问静态 .jpg 文件不会导致此问题。
- 直接访问图像脚本也不会导致它。
- 只有将 .jpg 文件重写为 .aspx 脚本才会导致会话丢失。
这不是一个重定向循环——图像出现了,但是缓存服务器提交了一个新的会话 cookie,它(因为它来自我的主机名)导致会话重置。
我尝试过的事情
(来自 Rackspace 文档How can I bypass the cache?)
我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
将不起作用。
交替...
请告诉我为什么这无法解决。