2011-03-02 9 views
8

Estoy haciendo una llamada a un servicio web REST y la aplicación móvil está recuperando los resultados de su caché y no va al servidor.Cómo deshabilita el almacenamiento en caché con WebClient y Windows Phone 7

he visto otras correcciones sugeridas (similar issue y similar issue2), pero la propiedad de caché no está disponible en Silverlight 4.

¿Alguien tiene una idea de cómo forzar Silverlight 4 en Windows Phone 7 para hacer una petición y no golpear el caché?

+0

Tenga en cuenta que WP7 utiliza una variante de Silverlight 3, 4. No –

Respuesta

5

He solucionado este problema también en overflow 7 hablando con StackApps: lo único que podía pensar era añadir una variable aleatoria de suma al final de la solicitud HTTP/REST.

16

Aunque no es ideal, una solución fácil es enviar algo como el campo "basura" con el valor DateTime.Now. De esta forma, un valor siempre es nuevo y nunca se almacenará en caché. Si estuviera haciendo esto en un querysting estándar, por ejemplo:

"&junk=" + DateTime.Now; 
+9

Esto sería más limpio "? nocache =" + Environment.TickCount – bragboy

+0

funcionó para mí, gracias :) –

+0

¡esta respuesta debe marcarse como la correcta! – Danil

3

La solución más propuesto es el mismo que William Melani de. Pero no es ideal y algunos servicios rechazan solicitudes con parámetros desconocidos o cualquier parámetro. En este caso, es más limpio y más fiable utilizar la cabecera IfModifiedSince de la siguiente manera:

WebClient wc = new WebClient(); 
    wc.Headers[HttpRequestHeader.IfModifiedSince] = DateTime.UtcNow.ToString(); 
    wc.DownloadStringCompleted += wc_DownloadStringCompleted; 
    wc.DownloadStringAsync(new Uri(bitstampUrl)); 
0
WebClient wc = new WebClient(); 
wc.Headers[HttpRequestHeader.IfModifiedSince] = DateTime.UtcNow.ToString(); 

trabajó para mí