If-None-Match,HTTP中的ETag与RestSharp

时间:2013-03-11 21:19:37

标签: c# asp.net-web-api restsharp

Etag在HTTP规范中得到了很好的定义。这里有更多解释http://en.wikipedia.org/wiki/HTTP_ETag

最近我尝试将RestSharp客户端库与ASP.Net Web API一起使用,但是我遇到了一些缓存问题,我将Etag从服务器端(即“ETag”:“12345”作为响应头)发送给客户端和我可以在RestResponse对象的响应头中看到相同的Etag,到目前为止很高兴。

现在在下一个请求中,使用相同的RestSharp客户端,我希望RestSharp在后续服务器请求中传递'If-None-Match'标头(即“If-None-Match”:“12345”作为请求标头)相同的资源,但不幸的是我无法找到一种方法来设置RestSharp来自动执行它。

注意:c#中的WebClient类在原始操作中完成该工作,但RestSharp没有。

我想要的是,有人确认怎么做,或者只是告诉我我是垃圾:P

2 个答案:

答案 0 :(得分:1)

根据我在源代码中看到的内容,您需要在下一次请求该资源时自己添加该标头。

答案 1 :(得分:1)

RestSharp在幕后使用HttpWebRequest。我在客户端初始化期间运行了这行代码,并开始自动获取If-None-Match标题。

HttpWebRequest.DefaultCachePolicy = new HttpRequestCachePolicy(HttpRequestCacheLevel.Default);

这告诉HttpWebRequest使用默认缓存级别(没有此行,似乎缓存级别设置为HttpRequestCacheLevel.BypassCache)。