System.Net.Http.HttpClient Кэширование поведения

Я использую HttpClient 0.6.0 от NuGet.

У меня есть следующий код C #:

var client = new HttpClient(new WebRequestHandler() {
    CachePolicy =
        new HttpRequestCachePolicy(HttpRequestCacheLevel.CacheIfAvailable)
});
client.GetAsync("http://myservice/asdf");

Служба (на этот раз CouchDB) возвращает значение ETag и код состояния 200 OK. Возвращается заголовок Cache-Control со значением must-revalidate

Обновление, вот заголовки ответа от couchdb (взяты из отладчика visual studio):

Server: CouchDB/1.1.1 (Erlang OTP/R14B04)
Etag: "1-27964df653cea4316d0acbab10fd9c04"
Date: Fri, 09 Dec 2011 11:56:07 GMT
Cache-Control: must-revalidate

В следующий раз, когда я делаю точно такой же запрос, HttpClient выполняет условный запрос и возвращает 304 Not Modified. Какой правильный.

Однако, если я использую низкоуровневый класс HttpWebRequest с тем же CachePolicy, запрос даже не выполняется во второй раз. Именно так я бы хотел, чтобы HttpClient также вел себя.

Это обязательное повторное подтверждение значения заголовка или почему HttpClient ведет себя по-другому? Я хотел бы сделать только один запрос, а затем получить остаток из кэша без условного запроса ..

(Также, как примечание, при отладке код состояния ответа отображается как 200 OK, даже если служба возвращает 304 Не изменено)

Ответы на вопрос(0)

Ваш ответ на вопрос