7
votes

Silverlight: Comment forcer le navigateur à télécharger la version client mise à jour?

My Silverlight (4.0) App (hébergé par le site Web ASP.NET) utilise 4 projets, ils utilisent tous un fichier avec la version de montage: xxx

La version de l'application actuellement affichée est 1.0. 3842.38865, mais le plus récent (1.0.3854.42448) est téléchargé récemment sur le serveur.

Le problème est que le navigateur ne charge pas de nouvelle application Silverlight après son déploiement sur le serveur.

ici est un code HTML utilisé pour "rendu" de silverlight-html-loader (pas sûr si c'est un nom correct): xxx

J'ai essayé d'ajouter un paramètre au paramètre "Source" de l'objet contenant le temps de dernière modification de fichier XAP: xxx

qui a provoqué une erreur de chargement d'applications Silverlight :

Erreur non heurtée en Silverlight Code de l'application: 2103 Catégorie: Message InitializeError: Application invalide ou malformée: Vérifiez le manifeste

Pourriez-vous vous conseiller comment forcer le navigateur pour obtenir une nouvelle application à partir de serveur (sans le cache de navigateur manipulant, je voudrais garder l'option de mise en cache de navigateur)?

Merci beaucoup! < / p>

ps Il est nécessaire d'ajouter que Silverlight Application fonctionne (téléchargée et lancée) bien sur mon localhost sans aucune danse avec des paramètres. Seulement lorsque je le télécharge sur le site Web - il n'est pas rechargé par navigateur. Et ajouter des paramètres supplémentaires au chemin XAP-File - ne fonctionne pas sur localhost.


2 commentaires

L'application est rechargée lorsque le site Web est rechargé. Voulez-vous respecter cela? Ou même la recharge du site Web ne fonctionne-t-elle pas?


Oui, le rechargement du site Web ne provoque pas de rechargement d'applications Silverlight


4 Réponses :


2
votes

Cela devrait fonctionner comme prévu, peut-être que cela a quelque chose à voir avec la manière dont vous êtes ajouté à la param. Essayez de supprimer la partie ver = code> partie: xxx pré>

J'ai utilisé cette méthode dans le passé et c'est le meilleur moyen de contourner la mise en cache latérale du client. P >

Si vous voulez toujours rafraîchir et ne jamais mettre en cache, vous pouvez simplement ajouter le courant DateTime code> à la fin qui sera toujours unique. Je ne sais pas que lorsque vous voudriez faire cela dans un scénario du monde réel, mais il est idéal pour les tests pour vous assurer de ne jamais avoir une version mise en cache en cours d'exécution. Exemple: P>

<param name="source"
    value="/ClientBin/VfmElitaSilverlightClientApplication.xap?<%= DateTime.Now.Ticks.ToString() "/>


1 commentaires

Ajout de n'importe quoi après ".xap" Empêcher le téléchargement d'applications et le lancement sur le localhost, donc je n'ai donc pas essayé de vérifier cela sur le site Web réel.



1
votes

L'approche correcte de la gestion du cache de navigateurs est de lui dire ce que vous attendez de cela via les en-têtes de réponse HTTP approuvés envoyés par le serveur.

dans IIS Manager précise que le contenu du dossier clientBin est expiré immédiatement.

Notez que THS ne signifie pas que le XAP WIL soit téléchargé sur chaque demande, juste que le navigateur doit vérifier que sa copie mise en cache est à jour.


1 commentaires

Existe-t-il un moyen de forcer le client à se rafraîchir pendant son exécution? J'ai des utilisateurs qui gardent le client ouvert pendant des jours.



4
votes

Ce que nous utilisons actuellement est le suivant qui obtient le dernier temps d'écriture du fichier .xap et l'a ajouté à la source-param: xxx


0 commentaires

4
votes

Je teste toujours, mais jusqu'à présent, il semble que la modification de la assmeblyfileversion forte> oblige le navigateur à télécharger le dernier fichier XAP. En utilisant Silverlight 4, j'ai essayé de nombreuses autres solutions offertes et que je ne pouvais pas les amener au travail ou qu'ils n'étaient pas souhaitables (comme aucun mis en cache du tout). Maintenant, je incrémente la version du fichier, et il semble saisir la dernière xap à chaque fois.

[assembly: AssemblyFileVersion("1.0.0.1234")]


0 commentaires