Comment maintenir le même id de session entre plusieurs applications web en ASP.NET
J'ai deux identiques programme d'installation d'applications sur IIS sur différents répertoires virtuels (j'ai fait un peu de solution de contournement pour s'assurer qu'ils ont tous deux le même nom de l'application). Est-il un moyen de partager des id de session sur deux asp.net les applications web?
Depuis que je suis stocker la session en StateServer, ils doivent tous être de la même session de données, cependant, une autre id de session est créé à chaque fois que je passe d'une application à applicatino b. Ne serait-il pas ainsi dans un scénario d'équilibrage de charge? Où, quand je vais à l'www.test.com il serait de rediriger la demande vers le serveur a, et puis si j'ai frappé à nouveau, il serait d'aller sur le serveur b, mais depuis, c'est une autre application web, il serait de créer un nouvel id de session?
La base de données aurait le même problème, à moins que j'applique une solution de contournement. Depuis c'est deux applications différentes de la DB, il aurait 2 sessions distinctes.
Vous ne comprenez pas ma suggestion. Au lieu d'utiliser la session tout,au lieu que ce soit des données persistantes dont vous avez besoin dans une base de données commune. Les Sessions et les cookies, sont conçus pour garder les applications de marcher les uns sur les autres, ce qui nécessite l'isolement. C'est l'une des nombreuses choses que les bases de données sont bonnes pour.
OriginalL'auteur Keyvan Sadralodabai | 2010-07-09
Vous devez vous connecter pour publier un commentaire.
Tout d'abord, configurez l'élément sessionState dans votre site web.config pour utiliser cookieName="SOME_COOKIE_NAME_HERE" dans les deux applications.
Ensuite, assurez-vous juste les url ont la même TLD (top-level domain), c'est à dire app1.mydomain.com et app2.mydomain.com et vous devriez être en mesure de gérer l'événement Session_Start Mondiale.asax et de mettre ce code:
Aussi, je vous recommande d'aller avec le SqlServer SessionState Mode.
Je ne vois pas pourquoi pas.
Intéressant. Après l'application de ce changement, je reçois un nouvel id de session, conformément à la demande. Voici mon Global.asax code: void Session_Start(object sender, EventArgs e) { HttpCookie cookie = new HttpCookie("SessionCookie", Session.Id de session.ToString()); biscuits.Expires = DateTime.Maintenant.AddMinutes(20); biscuits.Domain = "*.keivantest.com"; biscuits.HttpOnly = true; Réponse.SetCookie(cookie); } Voici mon site web.de configuration config: <sessionState mode="StateServer" stateConnectionString="tcp / ip=localhost:42424" cookieless="false" cookieName="SessionCookie" timeout="20"/>
Aussi, après que le nom du cookie est mis en Application Un, la prochaine fois que je vais à la Demande de B, son session_start les incendies et les remplacements "SessionCookie" avec son propre identifiant de session
Changer de domaine à partir de *.domain.com pour domain.com et il a commencé à travailler.
OriginalL'auteur matt-dot-net
Au départ, j'ai été confronté au même problème. Ce que j'ai fait est, je annuler la jsession id de chaque domaine. Je veux dire, Si l'utilisateur tombe sur domain1.com, ensemble le même id de session pour domain2.com à partir d'une iframe. et vice-versa. Avec cela, vous pouvez conserver la même session dans plusieurs domaines.
Vous avez besoin de tester l'impact sur plusieurs serveur sur le réseau avec un équilibreur de charge.
OriginalL'auteur Manjunath Jakkandi
Est votre objectif de parler de l'état de session entre les 2 applications, et pas seulement l'ID de session? Je crois que le StateServer utilise également le chemin de l'application ainsi que l'id de session pour stocker les données de sorte que même si le SessionID étaient les mêmes, vous ne serait pas encore en mesure de partager les données. Vous pourriez avoir à écrire votre propre module de session.
D'équilibrage de charge des applications web n'ont pas ce problème parce que le chemin de l'application est le même pour tous les membres du cluster.
Il a dit qu'il est allé à la difficulté d'obtenir le nom de l'application de la même
OriginalL'auteur David