繁体   English   中英

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

[英]WCF OperationContract is 304 in IE (7-9) but not Firefox or Chrome

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

这不是服务的问题,而是IE。 Fiddler没有显示任何内容,因为浏览器未发送任何内容,它使用的是上次缓存的响应。 如果可以,请使用Post,否则使每个Get请求看起来都不同: url: "usertoken/populate?" + new Date().getTime() url: "usertoken/populate?" + new Date().getTime()较旧的IE不利于使用Gets忽略无缓存

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM