2011-01-06 9 views
2

D'après ce que je comprends, la classe HttpWebRequest met toujours en cache les données téléchargées. Maintenant, cela ne me dérange pas, mais après avoir réparé la même URL via HttpWebRequest pendant la durée de l'application, j'ai remarqué que les données sont corrompues (comme les données JSON téléchargées deviennent incomparables). Après avoir redémarré l'émulateur de téléphone, tout va mal jusqu'à ce qu'il se reproduise.WebRequest Caching Windows Phone 7

Maintenant, je me demande s'il est possible de désactiver la mise en cache dans HttpWebRequest.

Voici une partie du code que je me sers pour faire un appel HttpWebRequest:

var request = (HttpWebRequest)WebRequest.Create(string.Format(uri)); 

     request.BeginGetResponse(a => 
     { 
      var response = request.EndGetResponse(a); 
      var responseStream = response.GetResponseStream(); 
      using (var sr = new StreamReader(responseStream)) 
      { 
       string json = sr.ReadToEnd(); 
       Deployment.Current.Dispatcher.BeginInvoke(() => 
       { 
        //Newtonsoft.Json.Linq; 
        JObject artistObject = JObject.Parse(json); 
        //...etc 
       }); 
      } 
     }, null); 
    } 

Répondre

4

Une technique courante pour contourner cette mise en cache est d'ajouter un paramètre à la chaîne de requête qui est incrémenté sur les appels successifs. Ce sujet traite plus en détail du comportement de Silverlight, et couvre une partie de la gestion du serveur que vous pouvez aussi regarder si vous avez ce contrôle. Cela dit

WebClient Caching Problem

, avez-vous été en mesure de produire simple repro de la corruption que vous rencontrez? Cela pourrait valoir la peine d'être examiné.