mardi 23 septembre 2008

Perte de session lors de la modification de la structure d' un site ASP.net

Lors du développement d' un site créant dynamiquement des répertoires, je me suis rendu compte que IIS perdait systématiquement sa session. Il semble que cela soit du au statut du process IIS.

Heureusement ASP.net prévoit une solution à ce problème : il est possible de stocker la session dans un autre process indépendant, et cela grâce au service ASP.NET State Service.

Il faut commencer par démarrer ce service et le mettre en automatique, de manière à ce qu' il soit redémarré en même temps que IIS.

Deux paramètres peuvent être modifié : le port utilisé par le service et le fait qu' il puisse ou non être utilisée depuis une machine distante. La configuration se fait dans la base de registre du serveur :

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\aspnet_state\Parameters

Par défaut le port utilisé est : 42424
Maintenant que le service est démarré et paramètré, il reste à modifier le fichier web.config du site :



...


Dans cet exemple, la session est stockée dans le state server Asp.net, il est également possible de stocker la session dans une base de données SQL. Cela rend l' application moins performante mais permet de conserver la session mais en cas de reboot du serveur web.

Biensur, tout les objets stocké dans la variable de session doivent être serialisable.

Aucun commentaire: