Sessions multi-serveurs en ASP.NET et C#

L’état de session peut se gérer de plusieurs façon :
Dans le processus "InProc"
Dans SQLserveur ‘SQLServer"
Dans un serveur d’état "StateServer"

Nous allons nous préoccuper de l’installation de l’état de session avec SQL Serveur
Il faut lancer le service ASP.NET STATE le port par defaut est 42424
dans le shell lancer
NET START aspnet_state ou avec la console mmc des services lancer ASP.NET STATE (ou Service d’état ASP.NET)

Il faut executer la requête "InstallSqlState.sql" qui se trouve dans /WINNT/MICROSOFT.NET/Framework/[version] . Cette requête va installer des procedures stockées (dans une base ASPState) et plusieurs bases de données temporaires

Rq: lancer votre agent sql pour recevoir les notification d’installation correcte
Rq2 : Possibilité de lancer également installpersistsqlstate.sql

La différence est que Le script installsqlstate.sql place des informations dans la base tempdb qui au redémarrage de sql ou du serveur vont disparaitre; hors avec installpersistsqlstate.sql les informations seront conservées
http://support.microsoft.com/kb/311209

Le script doit être lancer qu’une seule fois (administrateur(sa)):
lancer dans le shell
OSQL -S localhost -U sa 6P
Configurer le Web.Config :
sessionState mode="SQLServer" stateConnectionString="tcpip=127.0.0.1:42424" sqlConnectionString="data source=[nomdemachine\instance];Trusted_Connection=true" cookieless="false" timeout="20" />
ou
sessionState mode="SQLServer" stateConnectionString="tcpip=127.0.0.1:42424" sqlConnectionString="data source=[nomdemachine\instance];userid=session;password=xxx" cookieless="false" timeout="20" />

ASP.NET accède aux données stockées par le biais de procédures stockées. LEs données de sessions sont stockées dans TempDb par défaut. On peut donc modifier l’endroit de stockage en modifiant les procédures stockées.
si utilisation de "trusted_connection=true" dans la chaine de connection de "sessionState" le compte ASPNET doit avoir les droits en exécution sur les procédures stockées de la base ASPState

ASP.NET State Service

Installation de ASP.NET State Service en tant que service
dans le cas où il ne serait plus actif. Il faut lancer une commande en ligne qui va l’installer dans le registry

Récupérer l’applicatif pour installer des services dans le ressource kit de WIN 2000
ftp://ftp.microsoft.com/reskit/
lancer le shell
en theorie
sc \\remotecomputer create newservice binpath= c:\nt\system32\newserv.exe
en pratique
sc \\. create "ASP.NET State Service" binpath= C:\WINNT\Microsoft.NET\Framework\v1.1.4322\aspnet_state.exe

Attention le egal "=" doit toucher le mot "binPath" et suivi d’un espace
et c gagné!

pour le supprimer
sc \\. delete "ASP.NET State Service"

Remarque
par defaut il mets le compte "LocalSystem" normalement il devrait y avoir le compte ".\ASPNET" seulement il faut le mot de passe avec.

une fois créé vous pouvez aller dans l’interface graphique des services et le configurer avec.

liens utiles
http://www.petri.co.il/download_free_reskit_tools.htm
http://support.microsoft.com/default.aspx?scid=kb;en-us;q251192
http://www.microsoft.com/windows2000/techinfo/administration/default.asp
http://www.mcseworld.com/forums/archive/index.php/t-13662
Explication Microsoft
http://support.microsoft.com/default.aspx?kbid=317604
Très précis
http://idunno.org/dotNet/sessionState.aspx