2009-11-12 13 views
27

Tengo un control 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?Obligar a los navegadores a volver a cargar Silverlight xap después de una actualización

Respuesta

35

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.

Yo sugeriría hacer algo como esto:

Digamos que tiene esto para su XAP en su html:

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

lo haría versión que lo que cada vez que haces un empuje cambia el número de versión. Ejemplo:

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

¿Eso valor asociado a la versión de montaje (es decir, 1.0.0.0)? –

+1

@Chris no, está completamente inventado. Puede poner cualquier cosa allí, siempre que lo cambie siempre que desee enviar los cambios al cliente. La mejor práctica, sin embargo, es mantenerla en línea con su versión. – Joseph

+1

Eso lo hizo, gracias por la sugerencia. –

2

¡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 reemplazar 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)) 
    { 
     ... 
    } 
} 
2

t no es muy raro encontrarse con el almacenamiento en caché .xap, lo que significa que cada vez que se despliegue 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. Se puede activar la opción “Activar cabecera HTTP contenido de caducidad” en 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 manera la última .xap (sólo si hay un archivo .xap última) obtendrán descargado cuando actualiza su página sin tener que cerrar el navegador.

Espero que esto ayude!

1

ponga la siguiente web.config en ClientBin

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