silverlight – WCF RIAServices抛出异常的查询有缓存问题

使用Silverlight的WCF RIA服务时,我们遇到HTTP响应缓存问题.

服务器端,我们有一个简单的DomainService GET方法,没有指定缓存,如下所示:

[OutputCache(OutputCacheLocation.None)]
  public IQueryable<SearchResults> GetSearchResults(string searchText);

当用户未经过身份验证时(即FormsAuthenticationCookie到期时),抛出DomainException.这是设计的.

但是当用户重新进行身份验证,并且使用相同的’searchText’参数再次调用Query时,Query永远不会到达服务器(没有断点命中; Fiddler显示没有发送http请求).

我认为这是因为当在服务器上抛出异常时,HTTP响应将“Cache-Control”属性设置为“private”,并且当客户端想要稍后执行相同的查询时(一旦用户登录),然后浏览器甚至不会将请求发送到服务器.

如果我们输入不同的搜索参数,则重新执行查询没问题.

是否有任何方法可以确保http响应始终具有“无缓存” – 即使它没有正常返回?

UPDATE1
只有部署到IIS时才会出现此问题 – 从使用Casini或IIS Express的Visual Studio进行测试时,它可以正常工作.

UPDATE2
我更新了问题以反映新知识.

解决方法

您不应该为授权错误抛出DomainException.由于Silverlight处理故障的方式,您的浏览器仍然可以缓存这些响应.相反,从您的DomainService抛出一个UnauthorizedAccessException,它应修复客户端上的缓存错误.

相关文章

如何在Silverlight4(XAML)中绑定IsEnabled属性?我试过简单的...
我正在编写我的第一个vb.net应用程序(但我也会在这里标记c#,...
ProcessFile()是在UIThread上运行还是在单独的线程上运行.如...
我从同行那里听说,对sharepoint的了解对职业生涯有益.我们不...
我正在尝试保存一个类我的类对象的集合.我收到一个错误说明:...
我需要根据Silverlight中的某些配置值设置给定控件的Style.我...