Question

J'ai donc configuré SQL Server Session State à l'aide de SQL Server 2008 et de la base de données temporaire. Aujourd'hui, j'ai décidé de consulter les données des tables uniquement pour le trouver dans la table ASPStateTempApplications:

AppId AppName
538231025 / lm / w3svc / 1 / racine
611758131 / lm / w3svc / 3 / racine
802488340 / lm / w3svc / 4 / racine
-940085065 / lm / w3svc / 4 / root / webapp
685293685 / lm / w3svc / 5 / racine
1210055478 / lm / w3svc / 5 / root / webapp

Nous avons 2 serveurs Web à charge équilibrée.

Lorsque j'examine les ID des applications Web des deux serveurs, je constate que Web1 a app1 avec ID 4 et que Web2 a APP1 avec ID 5. La même chose se produit avec l'autre application. web1 a app2 avec l'id de 1 et web2 a app2 avec l'id de 3.

Mon bon sens me dit que les serveurs Web ne partagent pas de sessions car l'identifiant de session utilise l'appid. Ai-je raison? Si c'est le cas, pourquoi cette mineure n'est-elle pas détaillée dans la documentation? Dois-je faire correspondre les identifiants sur les deux serveurs Web?

Était-ce utile?

La solution

L'AppId est utilisé lors de la création de SessionId pour éviter les collisions d'une application à l'autre. Il est créé en calculant un hachage du chemin de l'application IIS.

Dans votre environnement, le flux peut ressembler à ceci:

  1. Le serveur A crée un ID de session, le définit dans un cookie et stocke certaines données dans la session correspondante (une ligne dans ASPStateTempSessions). La colonne ID de session est créée en concaténant l’ID de session avec l’AppID.
  2. Le serveur B reçoit une demande avec un ID de session préexistant et l'utilise pour rechercher les données de session associées à partir de la table ASPStateTempSessions. Si l'ID de l'application est différent, la clé générée sera également différente.

L’effet net de la présence de plusieurs serveurs avec des AppIds différents partageant les mêmes sessions est que les ID créés par un serveur ne se heurtent pas à ceux d’un autre serveur et que les ordinateurs dotés d’AppId différents ne verront pas leurs sessions respectives.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top