Heim >Backend-Entwicklung >C++ >Wie kann ich den ASP.NET-Sitzungsstatus zwischen einem .NET 2.0 Web Forms und einer .NET 3.5 MVC2-Anwendung teilen?
Anwendungsübergreifende Sitzungsfreigabe in ASP.NET: Eine .NET 2.0 Web Forms- und .NET 3.5 MVC2-Lösung
Einführung
Die Aufrechterhaltung konsistenter Sitzungsdaten über mehrere ASP.NET-Anwendungen hinweg vereinfacht die Datenverwaltung und die Kommunikation zwischen Anwendungen. Dieser Artikel befasst sich mit einer häufigen Herausforderung: der gemeinsamen Nutzung von Sitzungen zwischen einer .NET 2.0 Web Forms-Anwendung und einer .NET 3.5 MVC2-Anwendung, die sich auf demselben Server befindet.
Das Problem: Inkonsistenzen der Sitzungsschlüssel
Bei Verwendung des StateServer-Modus mit identischen stateConnectionString
-Einstellungen wird der Sitzungsschlüssel erfolgreich übertragen, die MVC-Anwendung kann die Sitzungsdaten jedoch nicht abrufen (was zu einem Nullwert sessionKey
führt).
Die Lösung: Nutzung des nativen Sitzungsstatus von SQL Server
Die empfohlene Lösung besteht darin, beide Anwendungen so zu konfigurieren, dass sie die native Sitzungsstatusverwaltung von SQL Server nutzen.
web.config konfigurieren:
Ändern Sie die web.config
Dateien beider Anwendungen wie folgt:
<code class="language-xml"><sessionState mode="SQLServer" sqlConnectionString="..."/></code>
Stellen Sie sicher, dass die angegebene SQL Server-Instanz für beide Anwendungen zugänglich ist und dass die erforderliche Sitzungsstatusdatenbank vorhanden ist.
Anpassen der gespeicherten Prozedur:
Passen Sie die TempGetAppID
gespeicherte Prozedur in der Sitzungsstatusdatenbank an, um den Anwendungsnamen dynamisch aus der Verbindungszeichenfolge abzurufen. Dadurch können Anwendungen mit übereinstimmenden Namen Sitzungen teilen:
<code class="language-sql">@appId int OUTPUT AS ... -- Dynamically obtain the application name from the connection string DECLARE @connStrAppName nvarchar(50) SET @connStrAppName = APP_NAME() ...</code>
Sicherstellung konsistenter Maschinenschlüssel:
Beide Anwendungen müssen dieselben machineKey
Einstellungen verwenden, die in ihren jeweiligen web.config
Dateien definiert sind:
<code class="language-xml"><machineKey decryption="AES" validation="SHA1" validationKey="SOMEKEY"/></code>
Durch die Implementierung dieser Änderungen können beide Anwendungen Sitzungsdaten nahtlos austauschen, identische Sitzungsschlüssel verwenden und eine konsistente Formularauthentifizierung über alle Anwendungen hinweg aufrechterhalten.
Das obige ist der detaillierte Inhalt vonWie kann ich den ASP.NET-Sitzungsstatus zwischen einem .NET 2.0 Web Forms und einer .NET 3.5 MVC2-Anwendung teilen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!