[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:
1 2 3
| <system.web>
<sessionState timeout="20" />
<system.web> |
ou bien
Code:
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