c# silverlight deployment caching xap

c# - Obligar a los navegadores a volver a cargar Silverlight xap después de una actualización



deployment caching (4)

¡Estupendo! Funcionó incluso en el desarrollo de Windows Phone.

He puesto la línea:

NavigationService.Navigate(new Uri("/Game.xaml?versao="+version, UriKind.RelativeOrAbsolute));

Y luego anule el método OnNavigatedTo :

protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e) { base.OnNavigatedTo(e); string var; if (NavigationContext.QueryString.TryGetValue("version", out var)) { ... } }

Tengo un control de Silverlight empaquetado e implementado en un elemento web de SharePoint. Estoy teniendo problemas con el navegador cargando nuevas versiones del control después de presionar una actualización. Estoy actualizando el ensamblado y la versión de archivo de mi proyecto xap, pero no parece importar. La única forma de que el navegador cargue el nuevo xap es ir y eliminar los archivos temporales de Internet. Para mí, durante el desarrollo, está bien, pero tendré que buscar una solución antes de que llegue el momento de la producción. ¿Algunas ideas?


Esto tiene que ver con la forma en que su navegador maneja las solicitudes de recursos. Flash tiene problemas similares y hay un par de soluciones.

Aquí hay un article que detalla el problema y las posibles soluciones.

Sugeriría hacer algo como esto:

Digamos que tiene esto para su xap en su html:

<param name="source" value="ClientBin/myApp.xap"/>

Lo versionaría así que cada vez que haces un empujón cambias el número de versión. Ejemplo:

<param name="source" value="ClientBin/myApp.xap?ver=1"/>


No es muy raro encontrarse con .XAP caching, lo que significa que cada vez que implementa una nueva versión de la aplicación Silverlight, el navegador no descarga el archivo .XAP actualizado.

Una solución podría ser cambiar las propiedades de IIS. Puede activar la opción "Habilitar el encabezado HTTP de caducidad del contenido" para su archivo .XAP siguiendo estos pasos:

Open IIS Manager Go to “Default Web Site” and find web site for your Silverlight project. Find the .XAP file under ClientBin. Go to the properties page of the .XAP file, on HTTP Headers Tab, Turn on “Enable Content Expiration”, click the “Expire Immediately” radio button. Save the changes.

De esta forma, se descargará el .XAP más reciente (solo si hay un archivo .XAP más reciente) cuando actualice su página sin tener que cerrar el navegador.

¡Espero que esto ayude!


pon el siguiente web.config en ClientBin

<configuration> <system.webServer> <staticContent> <clientCache cacheControlMaxAge="0.00:00:01" cacheControlMode="UseMaxAge"/> </staticContent> </system.webServer> </configuration>