A DotNet Raider

My adventures in the .NET world!
posts - 49, comments - 12, trackbacks - 0

My Links

News

Website View Martino Bordin's profile on LinkedIn

Archives

Post Categories

Workaround al caching del WebClient su WP7

In una mia applicazione utilizzo l’oggetto WebClient per effettuare chiamate REST ad un web service che mi restituisce un XML con il risultato.

Una particolarità è che, a parità di URL, l’XML risultante cambia (es: un metodo GetRandomProducts).

Fin qui niente di strano..tuttavia WebClient utilizza un meccanismo di cache interno in base all’indirizzo e non ci sono proprietà per disabilitare tale comportamento.

L’unica soluzione che ho trovato è passare in QueryString un parametro random (es: un GUID).

Mi sono quindi creato un extension method che qui riporto.

  1. public static class WebClientExtensions
  2.     {
  3.         public static void DownloadStringAsync(this WebClient client, Uri uri, object userToken, bool ignoreCache)
  4.         {
  5.             if (ignoreCache)
  6.             {
  7.                 Uri freshAddress;
  8.  
  9.                 if (string.IsNullOrEmpty(uri.Query))
  10.                 {
  11.                     freshAddress = new Uri(uri.AbsoluteUri + "?" + Guid.NewGuid());
  12.                 }
  13.                 else
  14.                 {
  15.                     freshAddress = new Uri(uri.AbsoluteUri + "&" + Guid.NewGuid());
  16.                 }
  17.  
  18.                 client.DownloadStringAsync(freshAddress, userToken);
  19.             }
  20.             else
  21.             {
  22.                 client.DownloadStringAsync(uri, userToken);
  23.             }
  24.         }
  25.     }

Print | posted on sabato 30 aprile 2011 22:38 | Filed Under [ WP7 ]

Comments have been closed on this topic.

Powered by:
Powered By Subtext Powered By ASP.NET