Perte de session lors de la suppression d'un répertoire
Voici une question fréquente sur les différents forums ASP.NET ...
Depuis le Framework 2.0, il s'est avéré que certaines pratiques engendrent des phénomènes étranges sur les Sessions ASP.NET. En effet, bon nombre d'applications ont pour fonctionnement d'ajouter, modifier et surtout supprimer des répertoires dans l'arborescence même du site web. Ce procéder engendre donc un le recyclage du pool d'application IIS 6 et donc la perte des sessions utilisateurs dans le cadre d'une gestion "InProcess".
Plusieurs solutions existent pour parer au problème :
-
Modifier l'application pour qu'elle ne puisse interagir que sur des répertoires dont l'arborescence est distincte de celle du site web. Cette solution n'est malheureusement pas toujours possibles selon les cas.
-
Modifier la gestion de Session pour passer sur un mode "StateServer". Cette solution permet de contourner le problème de perte de session mais pas celui du déchargement du pool d'application IIS 6 et n'est donc clairement pas a privilégier.
En cherchant une solution plus acceptable et n'impactant pas l'application hébergée, je suis tombé sur un post de Todd Carter proposant une solution intéressante basée sur les "Points de jonctions NTFS" à l'aide de l'utilitaire linkd.exe du Ressource Kit de Windows 2003. Cette astuce permet donc de laisser le répertoire de l'arborescence du site web que l'on souhaite modifier tout en faisant un pont vers un autre répertoire où sera réellement stocker le contenu.
Let’s extend the sample web application used previously, let’s suppose I want to be able to create and delete files and directories within a directory under my web application at c:\webRoot. For this sample I consider these files and directories my content so I will create a directory named content such as c:\webRoot\CONTENT. I then create another directory which is really where my content will be stored at c:\MyWebContent. This sample assumes my C: drive is formatted as NTFS. I now need to create a directory junction between c:\webroot\content and c:\mywebcontent by using a utility called linkd.exe. The Linkd.exe utility ships with the Windows Server 2003 Resource Kit and can be downloaded from here.
Deleting ASP.NET 2.0 Application Sub-Directories Shuts Down the AppDomain
Point de jonctions NTFS
Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :