来自Silverlight的REST服务调用中的标头和缓存

时间:2011-11-18 09:02:44

标签: silverlight caching rest

我一直在开发一个小型Silverlight客户端,它将使用WCF WEBAPI与REST服务构建进行对话.... 当使用GET调用服务时,它将启动一个长时间运行的进程,它将生成一个资源,因此服务将返回'Accepted'和Location头中的URI,以找到资源的位置。< / p>

Server: ASP.NET Development Server/10.0.0.0
Date:   Fri, 18 Nov 2011 09:00:17 GMT
X-AspNet-Version:   4.0.30319
Content-Length: 3
Location:   http://localhost:52878/myservice?fileid=f68201f6-9d77-4818-820e-e5e796e9710a
Cache-Control   public, max-age=21600
Expires:    21600
Content-Type:   text/plain
Connection: Close

现在,在我的Silverlight客户端中,我需要访问此标头信息,但是使用BrowserHTTP堆栈,这是不可能的...所以我切换到ClientHTTP,这使我可以访问标题信息已退回。 但是,ClientHTTP堆栈不​​支持内容缓存:

http://www.wintellect.com/CS/blogs/jprosise/archive/2009/10/14/silverlight-3-s-new-client-networking-stack.aspx

这给我带来了麻烦.....我想要在生成新的资源之前将相同的资源退回6小时。

有没有办法充分利用两者......能够访问标题信息并拥有内容缓存?

TIA

索伦

2 个答案:

答案 0 :(得分:0)

停止使用标头返回客户端代码所需的信息。

如果您使用raw或以某种消息格式(例如XML或JSON)编码在实体主体中包含所需信息,那么您可以继续使用BrowserHTTP并从其缓存中受益。

答案 1 :(得分:0)

使用标题是传达此信息的正确方法。这就是为什么它符合标准。 我不做Silverlight,但是我从那篇文章得到的是你现在需要实现缓存。使用BrowserHttp利用浏览器缓存机制。现在使用ClientHttp,您将更接近金属,您将不得不实施缓存。