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 :

[SL3] Problèmes de cache ou Session ?


Sujet :

Silverlight

  1. #1
    Membre confirmé Avatar de wil4linux
    Inscrit en
    Février 2005
    Messages
    205
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Février 2005
    Messages : 205
    Par défaut [SL3] Problèmes de cache ou Session ?
    Bonjour,

    Je suis en SL3 avec ria services bêta et VS2008.

    Ma solution est découpée en 3 projets:

    1) Silverlight Navigation application
    2) Silverlight Class Library
    3) web site

    (Appli SL) ---> (Silverlight Librairie Tools) <--- Web Site

    La librairie Silverlight est partagée entre les 2 autres projets, où chaque projet créera sa propre instance de cette librairie. Elle sert uniquement à stocker les fonctions communes aux 2 autres projets (on peut voir ça comme une couche "Tools")
    Elle permet aussi de stocker la connection string du Data Model Entity framework car l'utilisateur à le choix de se connecter à plusieurs base de données différentes, donc l'affection de la base dépend de l'utilisateur au démarrage de l'application.

    1) Démarrage de l'appli
    2) 1er web service (asmx) permettant de récupérer le login utilisateur via le HTTPContext du webservice).
    le web service et l'application Silverlight enregistre chacun les informations utilisateurs dans sa propres instance de la librarie tools. (je ne passe pas par les sessions.)

    2) Ensuite l'utilisateur choisi la base de donnée sur laquelle il veut travailler. Donc on appel un autre web service (asmx) qui va initialiser dans la librairie Tools (du web site) la connection string de la base de données.

    3) Ensuite au bout d'in certain temps d'inactivité (20 minutes par défaut je crois), la session ou le cache se perd du coté de la librarie Tools instanciée par le Web site.

    4) côté Silverlight, l'utilisateur ne le sait pas que ce contexte est perdu, du coup lors d'un nouvel appel aux données de la base via les RIA, l'instance de la librairie Tools est null (du web site) et forcément: les infos utilisateurs et la connection string est perdu côté Web site et Sivlerlight lève les exceptions comme quoi les requêtes sur les tables de la base dont impossibles car plus de connection string.

    Questions:

    1) Est ce que cela vient bien de la session ? du cache ?
    2) Faut il relancer la page aspx qui héberge l'application Silverlight pour redémarrer une nouvelle session ?
    3) Peut on prévoir cela en vérifiant côté web si la session est expirée ou le cache perdu en réinitialisant sans relancer l'application ?
    4) Faut il que l'application Silverlight appel un web service en background (genre toute les 30 secondes) pour vérifier que la session ou le cache est toujours présent (dans ce cas on peut re-proposer à l'utilisateur de se re-connecter et de re-choisir sa base ) ?

    5) Dans mon web.config il y a t il un intérêt de mettre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <system.web>
    <sessionState timeout="20" /> 
    <system.web>
    ou bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <system.web>
    <httpRuntime executionTimeout="20"/>
    <system.web>
    Le problème est que je n'arrive pas à simuler cette expiration de session ou de cache en local... (même en mettant un temps de session à 1 minutes dans le web.config ou dans IIS)

    Merci

  2. #2
    Membre éprouvé
    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
    Par défaut
    Sur ton application pool il y a un idleTimeout, la valeur par défaut est justement 20 minutes, essaye de modifier cette valeur la.

    Cette propriété m'a filé des cauchemars quand j'essayais de trouver pourquoi mon service WCF était mort.

  3. #3
    Membre confirmé Avatar de wil4linux
    Inscrit en
    Février 2005
    Messages
    205
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Février 2005
    Messages : 205
    Par défaut
    Citation Envoyé par DaMo` Voir le message
    Sur ton application pool il y a un idleTimeout, la valeur par défaut est justement 20 minutes, essaye de modifier cette valeur la.

    Cette propriété m'a filé des cauchemars quand j'essayais de trouver pourquoi mon service WCF était mort.
    Oui j'ai vu cette valeur. on peut la modifier dans IIS directement ou de la saisir dans le web.config via:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <system.web>
    <sessionState timeout="20" /> 
    <system.web>
    En fait ça change rien, que ce soit 20 minutes ou plus, j'aimerai gérer cette exception et avertir mon client que sa session est perdu et qu'il doit relancer l'application, ou bien relancer la session de manière transparente pour l'utilisateur.

    le seul moyen que j'ai actuellement, c'est rester sur ces 20 minutes, et lancer un timer en fond dans l'application Silverlight et au bout de 15 minutes, lancer un 1er message d'avertissement:

    "Attention, votre session expirera dans 5 minutes..."

    et au bout de 20 minutes, rediriger l'utilisateur vers une page d'erreur l'obligeant à rafraîchir la page et relancer l'application SL.
    => Mais bon c'est pas top...

    Et ce que je ne sais pas faire, c'est de réinitialiser une nouvelle session de manière transparente à l'utilisateur. Si je savais faire ça, je pourrais lui re-proposer de sélectionner sa base de données.

  4. #4
    Membre éprouvé
    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
    Par défaut
    est ce que tu as essayé de modifier cette valeur dans IIS directement ?

    Pour moi la modification dans le web.config ne fonctionnait pas.

  5. #5
    Membre confirmé Avatar de wil4linux
    Inscrit en
    Février 2005
    Messages
    205
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Février 2005
    Messages : 205
    Par défaut
    Citation Envoyé par DaMo` Voir le message
    est ce que tu as essayé de modifier cette valeur dans IIS directement ?

    Pour moi la modification dans le web.config ne fonctionnait pas.
    Ouais ça n'a pas marché que ce soit dans IIS ou dans le fichier de config...
    donc pour tester...

    Par contre je n'ai pas essayé de redémarrer IIS... c'est peut être pour ça...

    En tout cas, il y a une autre option dans IIS (alors pas dans ma version...), c'est de régler la durée d'inactivité dans le pool d'application.

    En tout cas, ce réglage ne change rien à mon problème...

Discussions similaires

  1. Problème de cache session
    Par zvince dans le forum Langage
    Réponses: 1
    Dernier message: 04/05/2007, 14h53
  2. problème de cache lors du chargement d'applet
    Par ellocin dans le forum Applets
    Réponses: 4
    Dernier message: 05/04/2007, 12h31
  3. [session cgi] problème d'expiration de session
    Par LE NEINDRE dans le forum Web
    Réponses: 2
    Dernier message: 15/05/2006, 19h50
  4. Problème de cache avec Oracle 8i
    Par lper dans le forum Bases de données
    Réponses: 3
    Dernier message: 08/11/2004, 16h50
  5. Problème de cache avec oracle 8 i
    Par lper dans le forum Oracle
    Réponses: 11
    Dernier message: 08/11/2004, 16h45

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