Comment utiliser la gestion de session avec l'Équilibreur de Charge dans Asp.Net
J'ai quatre autre serveur et un équilibreur de charge. Je veux utiliser le captcha de contrôle. J'ai fait quelque chose avec elle de cette façon:
J'ai créé un gestionnaire.ashx pour créer l'image captcha. Ce gestionnaire est utilisé dans la page Principale. Je garde le captcha vérification de mot de passe dans la session lors de la création du captcha de contrôle. Ensuite, j'ai comparé le mot de passe saisi par l'utilisateur avec le mot de passe dans la session. Il fonctionne très bien, mais sur un seul serveur.
Il ne fonctionne pas correctement avec quatre serveurs. Même si l'utilisateur saisit le mot de passe correct à chaque fois, c'est parfois des correspondances avec le mot de passe de session et parfois ne correspondent pas. Je pense que le problème pourquoi est-ce:
Par Exemple :
A,B,C et D sont quatre serveurs. L'équilibrage de la charge de les routes la première requête à Un serveur. Qui ouvre la page principale d'Un serveur et crée un mot de passe "123456'. C'est stockée dans la session sur Un serveur. Puis l'utilisateur a tapé le mot de passe et cliqué sur le bouton. Maintenant, l'équilibrage de la charge de routes de cette demande à la B serveur. Étant donné que la session en B Sever est null, les mots de passe ne correspondent pas.
De mon site web.config a ce,
<sessionState mode="StateServer" stateConnectionString="tcpip=127.0.0.1:42424"/>
Mais Il ne marche pas encore.
Que dois-je faire ?
Vous devez vous connecter pour publier un commentaire.
Donc, la première chose (juste pour s'assurer) - je crois que cette chaîne de connexion est juste un exemple parce que 127.0.0.1 est localhost et il n'aurait pas la chance de travailler ;).
Maintenant, je vais supposer que vous avez choisi Un serveur pour vous de l'état du serveur. Veuillez vérifier les choses suivantes:
Rappelez-vous que si vous avez modifié la configuration de "ASP.NET Service d'État" sur le serveur d'Un de ne pas utiliser le port par défaut (42424), vous devez refléter dans vos chaînes de connexion.
Il est parfois plus facile à configurer SQL Server en Mode" au lieu de "l'État du Serveur en Mode" alors vous pourriez envisager de que. Vous pouvez trouver plus de détails ici.
Vous devez utiliser StateServer ou SqlServer pour la gestion de l'état de la session et ils doivent être hors de votre pare-feu réseau qui est utilisé pour équilibrer la charge.
http://www.hanselman.com/blog/LoadBalancingAndASPNET.aspx
Lors de l'utilisation de l'État de Session du Serveur, il y a peu de choses qui doivent l'installation.
D'installation ASP.Net Service d'État de la machine qui vous voulez comme un StateServer.
Changer le Mode de Session dans le site Web.Fichier de configuration pour toutes les applications web et le point à un StateServer
3 . Tous Serveur Web l'utilisation même
<machinekey>
configuration(Note:Pour conserver l'état de session à travers différents serveurs Web dans la batterie de serveurs Web, le chemin de l'application du site Web (par exemple, \LM\W3SVC\2) dans Microsoft Internet Information Services (IIS) de la métabase doit être la même pour tous les serveurs Web dans la batterie de serveurs Web. Le cas doit également être le même, parce que le chemin de l'application est sensible à la casse.
[http://support.microsoft.com/kb/325056])