2009-11-12 15 views
27

Possiedo un controllo Silverlight impacchettato e distribuito su una web part SharePoint. Ho problemi con il browser che carica le nuove versioni del controllo dopo aver inviato un aggiornamento. Sto aggiornando la versione di assembly e file del mio progetto xap, ma non sembra avere importanza. L'unico modo per far caricare il nuovo xap dal browser è quello di entrare ed eliminare i file temporanei di Internet. Per me, durante lo sviluppo, va bene, ma dovrò trovare una soluzione prima che sia il momento della produzione. Qualche idea?Forzare i browser per ricaricare Silverlight xap dopo un aggiornamento

risposta

35

Questo ha a che fare con il modo in cui il browser gestisce le richieste di risorse. Flash ha problemi simili e ci sono un paio di soluzioni alternative.

Ecco uno article che descrive il problema e le possibili soluzioni.

Vorrei suggerire di fare qualcosa di simile:

Diciamo che avete questo per la vostra XAP nel tuo html:

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

vorrei versione in modo ogni volta che fate una spinta si modifica il numero di versione. Esempio:

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

fa che il valore associato alla versione di montaggio (vale a dire, 1.0.0.0)? –

+1

@Chris no è completamente inventato. Puoi mettere tutto lì, a patto di cambiarlo ogni volta che vuoi spingere le modifiche al client. La migliore pratica, tuttavia, potrebbe essere quella di mantenerla in linea con il tuo controllo delle versioni. – Joseph

+1

Questo ha funzionato, grazie per il suggerimento. –

2

Grande! Ha funzionato anche nello sviluppo di Windows Phone.

ho messo la linea:

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

E poi l'override del metodo OnNavigatedTo:

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

t non è molto raro imbattersi in Xap caching, il che significa che ogni volta che si rilascia una nuova versione dell'applicazione Silverlight, il browser non scarica il file .XAP aggiornato.

Una soluzione potrebbe essere quella di modificare le proprietà di IIS. È possibile attivare l'opzione “Abilita intestazione HTTP Content scadenza”, a per il file Xap seguendo questi step:

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. 

In questo modo l'ultima Xap (solo se v'è un ultimo file con estensione xap) andranno scaricato quando aggiorni la pagina senza dover chiudere il browser.

Spero che questo aiuti!

1

inserire il seguente web.config in ClientBin

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