Partage de session entre applications dans ASP.NET : un formulaire Web .NET 2.0 et une solution .NET 3.5 MVC2
Présentation
Le maintien de données de session cohérentes sur plusieurs applications ASP.NET simplifie la gestion des données et la communication inter-applications. Cet article aborde un défi courant : le partage de sessions entre une application Web Forms .NET 2.0 et une application .NET 3.5 MVC2 résidant sur le même serveur.
Le problème : incohérences des clés de session
Lors de l'utilisation du mode StateServer avec des paramètres stateConnectionString
identiques, la clé de session est transférée avec succès, mais l'application MVC ne parvient pas à récupérer les données de session (ce qui entraîne un sessionKey
nul).
La solution : exploiter l'état de session natif de SQL Server
La solution recommandée implique de configurer les deux applications pour utiliser la gestion native de l'état de session de SQL Server.
Configuration de web.config :
Modifiez les web.config
fichiers des deux applications comme suit :
<sessionState mode="SQLServer" sqlConnectionString="..."/>
Assurez-vous que l'instance SQL Server spécifiée est accessible aux deux applications et que la base de données d'état de session nécessaire existe.
Adaptation de la procédure stockée :
Ajustez la procédure stockée TempGetAppID
dans la base de données d'état de session pour récupérer dynamiquement le nom de l'application à partir de la chaîne de connexion. Cela permet aux applications dont les noms correspondent de partager des sessions :
@appId int OUTPUT AS ... -- Dynamically obtain the application name from the connection string DECLARE @connStrAppName nvarchar(50) SET @connStrAppName = APP_NAME() ...
Garantir des clés de machine cohérentes :
Les deux applications doivent utiliser les mêmes machineKey
paramètres, définis dans leurs web.config
fichiers respectifs :
<machineKey decryption="AES" validation="SHA1" validationKey="SOMEKEY"/>
En implémentant ces modifications, les deux applications peuvent partager de manière transparente les données de session, en utilisant des clés de session identiques et en maintenant une authentification par formulaire cohérente entre les applications.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!