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
答案 0 :(得分:1)
根据我在源代码中看到的内容,您需要在下一次请求该资源时自己添加该标头。
答案 1 :(得分:1)
RestSharp在幕后使用HttpWebRequest
。我在客户端初始化期间运行了这行代码,并开始自动获取If-None-Match
标题。
HttpWebRequest.DefaultCachePolicy = new HttpRequestCachePolicy(HttpRequestCacheLevel.Default);
这告诉HttpWebRequest
使用默认缓存级别(没有此行,似乎缓存级别设置为HttpRequestCacheLevel.BypassCache
)。