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?

Wie kann ich den ASP.NET-Sitzungsstatus zwischen einem .NET 2.0 Web Forms und einer .NET 3.5 MVC2-Anwendung teilen?

DDD
DDDOriginal
2025-01-23 21:36:11618Durchsuche

How Can I Share ASP.NET Session State Between a .NET 2.0 Web Forms and a .NET 3.5 MVC2 Application?

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 machineKeyEinstellungen verwenden, die in ihren jeweiligen web.configDateien 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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn