Perte de Session ASP.NET/SQL serveur

j'ai un ASP.NET MVC workflow configuré en deux sites Web gérés par un répartiteur de charge. Les sites Web utilisent Sql Server comme fournisseur d'état de session et ont désactivé l'authentification (CE n'est pas nécessaire).

maintenant, de façon sporadique, je semble perdre l'état de session, et je crois que c'est parce que la requête est traitée par le serveur alternatif, donc essentiellement l'utilisateur saute de serveur en serveur, en fonction de la façon dont l'équilibreur de charge voit l'ajustement. Je ne suis pas toujours "perdre session État" à la même étape dans le flux de travail, donc je crois que c'est quelque chose lié à la configuration de la ferme web + l'état de session du serveur sql.

Les deux applications utilisent la même clé machine pour chiffrer et déchiffrer l'état de session stocké dans le serveur sql.

La configuration sur les deux serveurs est comme suit:

<authentication mode="None" />
<sessionState mode="SQLServer" sqlConnectionString="{connection-string}" />
<machineKey decryptionKey="777CB456774AF02F7F1AC8570FAF31545B156354D9E2DAAD" 
            validationKey="89B5B536D5D17B8FE6A53CBB3CA8B8695289BA3DF0B1370BC47D362D375CF91525DDB5307D8A288230DCD4B3931D23AED4E223955C45CFF2AF66BCC422EC7ECD" />

j'ai confirmé que c'est identique sur les deux serveurs, est-il quelque chose que je suis absent?

Cela ne se produit pas dans mon développement environnement lorsque j'utilise un seul serveur.

je crains que je souffre du blues du vendredi, et sans doute va trouver la réponse la semaine prochaine, malheureusement je ne veux pas attendre!

des idées?

19
demandé sur Matthew Abbott 2012-05-11 20:12:55

3 réponses

Trouvé le problème.

lorsque vous créez des applications dont vous espérez partager l'état de session en utilisant Sql Server, ils ont besoin du même ID configuré dans IIS. C'est parce que l'ID de session généré est généré sur la base de l'ID de l'application. (À l'interne, L'ID d'application est quelque chose comme LM / W3SVC / 1

les deux serveurs avaient des identifiants différents pour chaque application dans IIS. La résolution est de changer L'ID sous 'gérer le site Web - > Paramètres avancés' sur chaque serveur.

enter image description here

28
répondu Matthew Abbott 2012-05-14 12:59:32
  1. en utilisant IIS Manager, revérifiez les paramètres des clés de votre machine au niveau de la racine et du site web.

enter image description here

  1. examiner le modificateur IsolateApps sur l'élément clé de la machine - http://msdn.microsoft.com/en-us/library/w8h3skw9%28v=vs.100%29.aspx

  2. avez-vous récemment passé de 3.5 à 4.0?

  3. en dernier recours - recycler les appPools sur les deux machines, et redémarrez IIS.

8
répondu Kris Krause 2012-05-11 17:43:22

les Sessions ont une portée d'application (web). Voir si cette base de connaissances microsoft aide.

mise à jour: Intéressant vote. Peut-être que ma suggestion a besoin de plus de clarté.

ajout pour machine de correspondance des clés, vous doivent correspondre à la configuration IIS pour les sites (donc c'est le "même application" (chemin de l'application) in IIS.

6
répondu EdSF 2012-05-13 15:34:23