WCF OperationContract在IE(7-9)中是304而不是Firefox或Chrome

时间:2012-05-21 16:51:40

标签: wcf internet-explorer iis iis-6 browser-cache

我有一台运行.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?

1 个答案:

答案 0 :(得分:0)

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

忽略no-cache,较旧的IE很糟糕