我有一个运行.net 4.0的IIS6服务器,它为IE返回304 (未修改),但不返回火狐或Chrome。我永远不希望在保存.svc文件时调用这个函数和其他函数缓存,而是始终使用200和新数据。我在运行IIS7.5的Win7上的本地主机上看不到这一点。响应头有一个Cache-Content: private,当在IIS6下运行时,Fiddler甚至不会显示请求。
[OperationContract]
[WebGet(UriTemplate = "usertoken/populate")]
public ClientUserToken PopulateUserToken()
{
return HttpContext.Current.Session["userToken"] as UserToken;
}我可以为每个方法添加一个AspNetCacheProfile("NoCachingProfile"),然后
<outputCacheSettings>
<outputCacheProfiles>
<add name="NoCachingProfile" noStore="true" duration="0" varyByParam="none" enabled="false"/>
</outputCacheProfiles>
</outputCacheSettings>添加到web.config中,但我希望避免在每个操作中都添加此内容。是否有IIS设置来执行此操作,或者是否应由代码驱动?为什么它只在IE中发生?
发布于 2012-05-31 01:34:03
这不是服务的问题,是IE的问题。Fiddler没有显示任何内容,因为浏览器没有发送任何内容,它使用的是最后一个缓存的响应。如果可以,使用Post,否则让每个Get请求看起来不同,就像:url: "usertoken/populate?" + new Date().getTime()旧的IE很糟糕,忽略了Get的无缓存
https://stackoverflow.com/questions/10689303
复制相似问题