如何解决引发异常的WCF RIAServices查询存在缓存问题
|| 将WCF RIA服务与Silverlight一起使用时,HTTP响应缓存存在问题。 服务器端,我们有一个简单的DomainService GET方法,未指定缓存,如下所示: [OutputCache(OutputCacheLocation.None)]
public IQueryable<SearchResults> GetSearchResults(string searchText);
如果用户未通过身份验证(即FormsAuthenticationCookie过期),则抛出DomainException。这是按设计的。
但是,当用户重新经过身份验证,并使用相同的\'searchText \'参数再次调用查询时,查询将永远不会到达服务器(没有断点命中; Fiddler显示没有发送http请求)。
我认为这是因为当服务器上引发异常时,HTTP响应将\'Cache-Control \'属性设置为\'private \',并且当客户端希望稍后执行相同的查询时(一旦用户已登录),那么浏览器甚至不会将请求发送到服务器。
如果我们输入一个不同的搜索参数,那么查询将被重新执行没有问题。
有什么方法可以确保http响应始终具有“ no-caching”(即使没有正常返回)?
更新1
仅当部署到IIS时才会发生此问题-使用Casini或IIS Express在Visual Studio中进行测试时,它工作正常。
更新2
我更新了问题以反映新知识。
解决方法
您不应该因为授权错误而抛出DomainException。由于Silverlight处理错误的方式,您的浏览器仍然可以缓存这些响应。而是从您的DomainService抛出UnauthorizedAccessException,这应该可以修复客户端上的缓存错误。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。