2

我有一个运行 .net 4.0 的 IIS 6 服务器,它为 IE 返回 304(未修改),但不是 Firefox 或 Chrome。我从不希望保存 .svc 文件中的这个和其他调用缓存,但始终是 200 和新数据。我没有在运行 IIS7.5 的 Win7 上的 localhost 上看到这个。响应标头具有 Cache-Content: private 并且在 IIS 6 下运行时,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 中?

4

1 回答 1

0

这不是服务的问题,是 IE 的问题。Fiddler 没有显示任何内容,因为浏览器没有发送任何内容,它正在使用最后一个缓存的响应。如果可以,请使用 Post,否则会使每个 Get 请求看起来不同: url: "usertoken/populate?" + new Date().getTime() Older IE is bad with ignoring no-cache with Gets

于 2012-05-30T17:34:02.660 回答