Windows Phone 7 WebRequest кэширование? - PullRequest
1 голос
/ 13 июня 2011

HTTP-клиент Windows Phone автоматически кэшируется?

При использовании Fiddler я не вижу все свои запросы.

Ответы [ 2 ]

7 голосов
/ 14 июня 2011

Да, HttpWeRequest (который используется внутри WebClient, если вы его используете) имеет встроенное кэширование, которое может быть довольно агрессивным, в зависимости от ваших требований.

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

Что-то вроде:

var mrUri = "http://something.com/path/file.ext?nocache=" + Guid.NewGuid();

или

var mrUri = "http://something.com/path/file.ext?nocache=" + DateTime.UtcNow.ToString();
1 голос
/ 14 июня 2011

У меня недавно была эта проблема. Некоторые сообщения в блоге об этом:

http://ayende.com/blog/4755/silverlight-and-http-and-caching-oh-my

http://www.nickharris.net/2010/10/windows-phone-7-httpwebrequest-returns-same-response-from-cache/

Вот код, который я использую с Spring.NET REST Client Framework , чтобы принудительно не кэшировать по умолчанию:

public class NoCacheRequestInterceptor : IClientHttpRequestFactoryInterceptor
{
    public IClientHttpRequest Create(IClientHttpRequestFactoryCreation creation)
    {
        creation.Uri = new Uri(String.Format("{0}{1}nocache={2}",
            creation.Uri.ToString(),
            String.IsNullOrEmpty(creation.Uri.Query) ? "?" : "&",
            DateTime.Now.Ticks.ToString()));

        return creation.Create();
    }
}

RestTemplate client = new RestTemplate("http://www.example.com/");
client.RequestInterceptors.Add(new NoCacheRequestInterceptor());
// ..
string result = client.GetForObject<string>("category/{id}", 4);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...