2013-03-11 3 views
1

Etag хорошо определен в спецификациях HTTP. Дополнительное объяснение доступно здесь http://en.wikipedia.org/wiki/HTTP_ETagIf-None-Match, ETag в HTTP с RestSharp

Недавно я попытался использовать клиентскую библиотеку RestSharp с веб-интерфейсом ASP.Net, однако у меня была проблема с кешированием, я отправляю Etag со стороны сервера (т.е. «ETag»: «12345» в качестве заголовок ответа) клиенту, и я могу видеть тот же Etag в заголовке ответа в объекте RestResponse, до сих пор счастливым.

Теперь в следующем запросе, используя тот же клиент RestSharp, я ожидаю, что RestSharp передаст заголовок «If-None-Match» (т.е. «If-None-Match»: «12345» в качестве заголовка запроса) в последующем запросе на сервер для того же ресурса, но, к сожалению, я не могу найти способ установить RestSharp для этого автоматически.

Примечание: Класс WebClient в C# выполняет эту работу в режиме raw, но RestSharp этого не делает.

То, что я хочу, чтобы кто-то подтвердить, как это сделать, или просто скажите мне, что я дрянь: P

ответ

1

Основываясь на том, что я вижу в источнике, вам нужно добавить, что заголовок себя на следующий запрос для этого ресурса.

1

RestSharp использует HttpWebRequest за кулисами. Я запустил эту строку кода во время инициализации моего клиента, и я начал автоматически получать заголовок If-None-Match.

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

Это говорит HttpWebRequest использовать уровень кэша по умолчанию (без этой линии, кажется, что уровень кэша установлен HttpRequestCacheLevel.BypassCache).

+0

У вас есть идеи, почему это настройка заголовка If-Range вместо If-None-Match для меня? –

+0

@bsthomsen Извините, я раньше не имел дело с 'If-Range'. Не стесняйтесь открывать новый вопрос, если уже не видите подобного вопроса. –