2009-11-22 19 views
9

Supongo que el problema que estoy teniendo está relacionado con el almacenamiento en caché. Los cambios de código que realizo no se recogen cuando depuro. La mayoría de las veces me sirven una versión anterior de la aplicación. ¿Cómo evito que esto suceda?Evite que Silverlight 3 cachee mientras depura

+0

¿Cómo estás depuración, ejecución en Visual Studio? ¿Tiene un sitio web de prueba en la solución? ¿En qué navegador estás alojando SL? – AnthonyWJones

+1

Hola, ¿este micrófono está encendido? ... Tiene 4 votos ascendentes sobre esta pregunta, pero no ha respondido a mis preguntas anteriores ni ha respondido a ninguno de los que se han tomado la molestia de intentar responder su pregunta. – AnthonyWJones

Respuesta

0

Por lo que veo, esto parece ser un problema con Firefox: cuando usé IE8, esto no me pasó a mí (me doy cuenta de que esto puede abrir su propia lata de gusanos, pero al menos para la depuración y prueba Silverlight, IE es mucho mejor)

0

No he tenido ningún problema con los ensamblados de Silverlight que se almacenan en caché; es posible que desee intentar depurar las solicitudes HTTP que van y vuelven, para ver si su servidor está devolviendo información incorrecta a el navegador (por ejemplo, una respuesta "no modificada").

Para el comportamiento general sin caché, el único método confiable que he encontrado es desactivar el almacenamiento en caché en el navegador.

Para IE, esta ha sido la única opción confiable; de ​​lo contrario, incluso si se envían encabezados de no-caché adecuados, ciertas cosas aún se almacenan en caché (específicamente, recursos cargados dinámicamente a los que se accede mediante Javascript XmlHttpRequest). Sin embargo, no he tenido problemas específicamente con la copia en caché de Silverlight cuando no debería: IE siempre ha cargado las últimas actualizaciones, incluso si la caché está habilitada.

Firefox ha sido mucho más problemático: incluso cuando se desactiva la caché, a veces aún almacena en caché los recursos XmlHttpRequest-loaded. Pulsar manualmente Actualizar algunas veces ha sido la única solución en tal caso. Una vez más, no he tenido problemas con los ensamblados de Silverlight, incluso si el caché está activado.

0

En Firefox, utilizo el complemento 'desarrollador web' y simplemente selecciono 'desactivar caché'. Funciona bien.

+0

No puedo decírselo a todos los usuarios de mi sitio web, así que tengo una mejor solución para todos. –

+0

Esto es solo para la depuración. No es necesario que informe a todos los usuarios de su sitio web, sino que también rompe la implementación de caché para el resto de sus usuarios. – ChadT

+0

Bueno, no queremos el almacenamiento en caché de la versión anterior cuando lanzamos una nueva versión, no hay posibilidad de romperla. –

2

tratar de añadir a la página que aloja la aplicación Silverlight en Load:

 Response.Cache.SetExpires(DateTime.Now.AddSeconds(-100)); 
     Response.Cache.SetCacheability(HttpCacheability.NoCache); 
2

Ctrl + F5 es una manera fácil de actualizar una página y borrar la caché de la página, al mismo tiempo - que puede ayudar :)

0

Firefox 3.5 en Herramientas tiene la opción de navegación privada. Haga clic para deshabilitar el almacenamiento en caché.

1

Añada una cadena de consulta "versión" a su XAP Url, algo así como:

http://localhost:1234/ClientBin/my_silverlight_app.xap?v=1.0.287.5361 

Esto engañar al navegador (y muchos servidores web) para pensar que se trata de un archivo diferente. Y cuando el problema de caché aparece nuevamente, aumente el número.

Si desea utilizar el almacenamiento en caché adecuado, hágalo en el lado del servidor con las directivas OutputCache.

0

Así es como lo he hecho para flex/flash y silverlight y funciona.

Código Detrás de ASPX o CSHTML

string slUrl = "/ClientBin/MySilverlight.xap"; 

string filePath = Server.MapPath(slUrl); 

FileInfo info = new FileInfo(filePath); 

// this will force browser to 
// re download file if file was 
// updated 
slUrl += "?t=" + info.FileWriteTime.Ticks; 

ASPX o CSHTML

<embed .... 
    src="<%= slUrl %>" 
    .. 
/> 

truco es que hay que cambiar la URL añadiendo algo después de ? y hacer una nueva cadena de consulta aleatoria arbitraria o use el tiempo de escritura del archivo, y para el navegador, something?t=1 y something?t=2 son dos direcciones URL y no se incluirá en el caché si t cambios.

En lugar de escribir el tiempo, también puede elegir cualquier valor de configuración estándar o incluso simplemente codificar su ASPX o HTML y agregar algo después de ? que obligará a los navegadores a descargar el archivo xap de Silverlight nuevamente.

<embed .... 
    src="/ClientBin/MySilverlight.xap?something-different-each-time" 
    ... 
    /> 
Cuestiones relacionadas