ASP.NET Session State ou Gestion de l’authentification en Out-Of-Process pour IIS 6

Voici un article sur une Best-Practice que nous essayons de prodiguer au plus grand nombre.

Par défaut, les données de sessions utilisateurs dans IIS sont stockées "In-Process". Ceci veut dire que les données sont stockées dans le processus "W3WP.exe" de l'application. Le problème est que lorsqu'on recycle l'application, étant donné que nous chargeons un nouveau processus "W3WP.exe", nous perdons ces données et les utilisateurs sont obligés de se ré-authentifier.

Pour les applications ASP.NET il est possible de gérer les données de sessions utilisateurs "Out-Of-Process" en les stockant dans un processus indépendant de IIS qui ne sera donc pas affecté par le recyclage.

Cela peut se faire de quatre manières différentes :

  • Sur le même serveur
    • dans le processus aspnet_state.exe
    • sur un SQL Serveur
  • Sur un serveur distant
    • dans le processus aspnet_state.exe
    • sur un SQL Serveur

Cette méthode est relativement simple. Le seul pré-requis est que tous les objets devant être envoyés en sessions soient sérialisables 

Pour plus de détails sur le ASP.NET SessionState :

Pour la mise en place d'un Session State :

A titre d'exemple, l'ajout de la ligne suivante dans le Web.config permet l'activation de l'ASP.NET Session State en local dans le processus aspnet_state.exe

  • <sessionState mode="StateServer" cookieless="false" timeout="20" stateConnectionString="tcpip=localhost:42424"/>

Dans le cas d'une application stockant un nombre important de données en session, il est impératif de tester les performances avant toute mise en production afin de vérifier que la sérialisation n'affecte pas les temps de réponses.

Ce paramètre n'est donc pas activable pour toutes les applications.

A tester !

@ Bientôt

Sylvain Lecerf et L'équipe de support IIS Microsoft France