DevExperience

.Net Framework, Embedded Systems & Design Patterns Paolo Patierno's Blog

Recent Posts

Apps & Articles

Applicazioni

Pubblicazioni

Tags

Archives

Windows Embedded CE 6.0

Building Embedded Devices using Windows Embedded CE 6.0 R2

My Profiles

 

My Embedded101 Blog

Sto leggendo...

Open Source Hardware

Windows Embedded

.Net Micro Framework

.Net Framework & CLR

Email Notifications

WP7 : HttpWebRequest e la cache interna

Forse non tutti sanno che la classe HttpWebRequest utilizza una propria cache interna per tutte le richieste che via via vengono eseguite durante il suo utilizzo.

Accade che, eseguendo una richiesta sempre al medesimo URL, l’oggetto HttpWebRequest istanziato non esegue effettivamente la richiesta (l’ho rilevato mediante Wireshark) ma bensì ritorna immediatamente il contenuto della richiesta fatta in precedenza allo stesso URL. Questo comportamento è, appunto, dovuto alla cache interna di cui la classe è dotata.

Su Windows Phone 7, non esiste la possibilità di modificare l’utilizzo della cache attraverso le cache policies come accade nel .Net Framework ma è necessario sopperire a questa mancanza attraverso un workaround.

   1: string requestUrl = String.Format(url + "&{0}", DateTime.Now.Ticks);
   2: HttpWebRequest request = HttpWebRequest.CreateHttp(requestUrl);
   3: request.BeginGetResponse(new AsyncCallback(HandleResponse), request);

Attraverso il codice precedente, si evince che il workaround consiste nell’aggiungere un parametro casuale nella query string dell’URL desiderato, in modo da avere di volta in volta un URL risultante diverso e forzare la richiesta. In questo caso, la casualità è determinata dai ticks del sistema ma potrebbe essere utilizzata anche legata alla generazione di un Guid. Tipicamente, questo parametro sarà ignorato dal web server ma servirà dal lato del device per “simulare” la richiesta ad un URL differente.

Sicuramente la soluzione non appare molto elegante ma a quanto pare è l’unica possibile…nell’attesa di piacevoli smentite !

Posted: 25 Mar 2012 21:45 da Paolo | con no comments
Inserito sotto: ,