IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Silverlight Discussion :

Forcer la mise à jour de la version du xap


Sujet :

Silverlight

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    876
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 876
    Points : 491
    Points
    491
    Par défaut Forcer la mise à jour de la version du xap
    Bonjour,

    Lorsque je publie des changements sur le serveur, je publie les fichiers Bin, ClientBin, Default.aspx, Silverlight.js et Web.config.

    Ces changements se répercutent immédiatement lorsque j'ouvre un IE sur lequel mon application a déjà tourné. (il y a donc rechargement du nouvel XAP)

    Une seule exception chez un ami qui travaille dans une grosse boîte, ou ils ont surement des proxys, caches ou autres trucs du genre, ce n'est pas la dernière version qui s'ouvre, ni même en éteignant la machine et en la ralumant.

    Existe t'il un moyen de "forcer" le chargement du XAP lorsqu'il y a un changement ?

  2. #2
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Et en supprimant les fichiers temporaires du navigateur ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    876
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 876
    Points : 491
    Points
    491
    Par défaut
    Bonne idée, mais j'y avais aussi pensé et ça ne change rien.

    Et puis de toutes manières, il est difficile de vérifier que tous les utilisateurs effacent régulièrement leurs fichier temporaires.

  4. #4
    Membre émérite
    Avatar de Samuel Blanchard
    Homme Profil pro
    Expert .NET
    Inscrit en
    Février 2010
    Messages
    1 504
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France

    Informations professionnelles :
    Activité : Expert .NET

    Informations forums :
    Inscription : Février 2010
    Messages : 1 504
    Points : 2 682
    Points
    2 682
    Par défaut
    ici c'est effectivement un problème de proxy. Tu peux demander à ton collègue de rajouter un regle dans son proxy pou qu'il ne cache pas ton serveur sinon tu peux t'en tirer en modifiant l'adresse du xap et en lui rajoutant quelque chose du genre :

    mon.xap?anticache=123456789

    ou la valeur 123456789 est un Guid par exemple qui change à chaque lecture de ta page aspx. ainsi tu es sur que le proxy chargera à tous les coups ton xap (pas de cache possible).

    EDIT : en ajoutant le numero de version plutot que le guid tu peux beneficier du cache de ton naviguateur tout en echappant au contrainte du proxy.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    876
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 876
    Points : 491
    Points
    491
    Par défaut
    Là tu m'intéresses !

    Surtout ton EDIT qui ne force pas le rechargement à chaque ouverture.

    Si je comprend bien, j'irais changer dans ma page Default.aspx :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <param name="source" value="ClientBin/JBase.xap"/>
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <param name="source" value="ClientBin/JBase_001.xap"/>
    et bien sûr j'adapterais le nom du fichier xap dans mon répertoire ClientBin.

    Je teste et je te reviens

  6. #6
    Membre émérite
    Avatar de Samuel Blanchard
    Homme Profil pro
    Expert .NET
    Inscrit en
    Février 2010
    Messages
    1 504
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France

    Informations professionnelles :
    Activité : Expert .NET

    Informations forums :
    Inscription : Février 2010
    Messages : 1 504
    Points : 2 682
    Points
    2 682
    Par défaut
    Oui ou :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    "ClientBin/JBase.xap&anticache=numeroversion"
    qui est peut être plus facile à mettre en place puisque que tu ne changes pas de nom du xap. à toi de voir !

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    876
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 876
    Points : 491
    Points
    491
    Par défaut
    J'ai bien testé le MonXap_001.xap et ça fonctionne, merci beaucoup.

    Quand tu proposes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "ClientBin/JBase.xap&anticache=numeroversion"
    je comprends que tu change l'extension du fichier plutôt que son nom.

    J'ai une petite crainte, j'ai du définir les mime types coté serveur pour qu'ils acceptent l'extension "xap", qu'en sera-t'il si je change xap en xap001 ?

    Deuxième question, le "numeroversion" est-ce une variable liée à l'application qui peut se mettre automatiquement ou est-ce une variable que tu gères toi même ?

  8. #8
    Expert éminent sénior
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Points : 13 380
    Points
    13 380
    Par défaut
    Non il ne change pas l'extension il rajoute simplement un paramètre.

    Comme avec une page php quand on fait show.php?image=toto.jpg, on ne change pas l'extension.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "ClientBin/JBase.xap&anticache=numeroversion"
    Donc là ça reste JBase.xap mais on lui passe simplement un paramètre qui ne sert à rien si ce n'est à bypasser le cache navigateur.

    De ton côté tu as donc juste besoin d'update ta page aspx et de changer le numeroversion. Lorsqu'un client arrivera sur ton site il re-téléchargera le xap.

    Savoir si ça marche avec faisant


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "ClientBin/JBase.xap?anticache=numeroversion"

  9. #9
    Membre émérite
    Avatar de Samuel Blanchard
    Homme Profil pro
    Expert .NET
    Inscrit en
    Février 2010
    Messages
    1 504
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France

    Informations professionnelles :
    Activité : Expert .NET

    Informations forums :
    Inscription : Février 2010
    Messages : 1 504
    Points : 2 682
    Points
    2 682
    Par défaut
    c'est bien ? et pas &

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    876
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 876
    Points : 491
    Points
    491
    Par défaut
    Merci les gars,

    Je ne peux tester maintenant car mon copain n'est pas dans sa société à cette heure. Mais je testerai et vous tiendrai informé.

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    876
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 876
    Points : 491
    Points
    491
    Par défaut
    Pour conclure,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "ClientBin/JBase.xap?anticache=1234"
    Fonctionne parfaitement bien comme "anticache"

    Il suffit de ne pas oublier de faire évoluer le 1234.

    Alors je me suis mis à rêver...

    Puisque ce changement doit se faire dans la defaultPage

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    <body>
        <form id="form1" runat="server" style="height:100%">
        <div id="silverlightControlHost">
            <object id="xaml" data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="100%">
    		  <param name="source" value="ClientBin/JBase.xap?anticache=1234"/>
    		  <param name="onError" value="onSilverlightError" />
    		  <param name="background" value="white" />
    		  <param name="minRuntimeVersion" value="3.0.40624.0" />
    	          <%
                  Dim currentCulture As String = System.Threading.Thread.CurrentThread.CurrentCulture.ToString()
                  Response.Cookies.Add(new HttpCookie("JBase-culture", currentCulture))
    	          %>
    		  <param name="uiculture" value="<%= System.Threading.Thread.CurrentThread.CurrentCulture %>" />
    		  <param name="autoUpgrade" value="true" />
    		  <a href="http://go.microsoft.com/fwlink/?LinkID=149156&v=3.0.40624.0" style="text-decoration:none">
     			  <img src="http://go.microsoft.com/fwlink/?LinkId=108181" alt="Get Microsoft Silverlight" style="border-style:none"/>
    		  </a>
    	    </object><iframe id="_sl_historyFrame" style="visibility:hidden;height:0px;width:0px;border:0px"></iframe></div>
        </form>
    </body>
    Y aurait-il moyen, en utilisant les <% ... %> et un system.DateTime de créer la ligne automatiquement

    <param name="source" value="ClientBin/JBase.xap?anticache=20100908_12h31"/> qui serait toujours unique d'une publication à l'autre ?

  12. #12
    Membre émérite
    Avatar de Samuel Blanchard
    Homme Profil pro
    Expert .NET
    Inscrit en
    Février 2010
    Messages
    1 504
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France

    Informations professionnelles :
    Activité : Expert .NET

    Informations forums :
    Inscription : Février 2010
    Messages : 1 504
    Points : 2 682
    Points
    2 682
    Par défaut
    oui mais si tu utilises le temps ca sera ok contre le proxy mais tu ne pourras pas utiliser le cache du naviguateur.

    Avec le numero de version de ta dll tu peux utiliser le meilleur des deux mondes. En revanche c'est plus complexe à récupérer mais on doit pouvoir sans tirer avec une dll partagée Silverlight/ASP.NET.

    pour générer le Param depuis ASP regarde là :

    http://forums.asp.net/p/1539348/3748093.aspx

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    876
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 876
    Points : 491
    Points
    491
    Par défaut
    OK, merci à tous les deux pour votre aide précieuse.

    Je pensais que le paramètre du defaultPage ne se calculait qu'à la compilation et plus à chaque exécution.

    Je pense que dans un premier temps, je vais donc me contenter de changer manuellement l'anticache...

  14. #14
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    121
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 121
    Points : 135
    Points
    135
    Par défaut
    tu peux faire un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                <param name="source" value="SilverlightBin/SilverlightOdyssee.xap?v=<%= GetLastModifiedDate() %>" />
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    var _fi = new System.IO.FileInfo(Server.MapPath("/") + "silverlightbin/silverlightodyssee.xap");
                return _fi.LastWriteTime.Ticks.ToString();

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 12/11/2009, 14h33
  2. Réponses: 4
    Dernier message: 01/11/2009, 18h39
  3. Mise à jour Windows Mobile version FR
    Par compdev dans le forum Windows Mobile
    Réponses: 2
    Dernier message: 01/07/2009, 12h06
  4. Réponses: 4
    Dernier message: 08/10/2007, 14h44
  5. Mise à jour de la version de MySQL
    Par jobstar dans le forum Administration
    Réponses: 8
    Dernier message: 18/08/2003, 10h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo