ASP.NET でのアプリケーション間セッション共有: .NET 2.0 Web フォームおよび .NET 3.5 MVC2 ソリューション
はじめに
複数の ASP.NET アプリケーション間で一貫したセッション データを維持することで、データ管理とアプリケーション間の通信が簡素化されます。この記事では、同じサーバー上にある .NET 2.0 Web フォーム アプリケーションと .NET 3.5 MVC2 アプリケーションの間でセッションを共有するという共通の課題に対処します。
問題: セッションキーの不一致
同じ stateConnectionString
設定で StateServer モードを使用すると、セッション キーは正常に転送されますが、MVC アプリケーションはセッション データの取得に失敗します (結果として null sessionKey
になります)。
解決策: SQL Server のネイティブ セッション状態の活用
推奨される解決策には、SQL Server のネイティブ セッション状態管理を利用するように両方のアプリケーションを構成することが含まれます。
web.config の構成:
両方のアプリケーションの web.config
ファイルを次のように変更します:
<code class="language-xml"><sessionState mode="SQLServer" sqlConnectionString="..."/></code>
指定された SQL Server インスタンスが両方のアプリケーションからアクセス可能であること、および必要なセッション状態データベースが存在することを確認してください。
ストアド プロシージャの調整:
セッション状態データベース内の TempGetAppID
ストアド プロシージャを調整して、接続文字列からアプリケーション名を動的に取得します。これにより、名前が一致するアプリケーションがセッションを共有できるようになります:
<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>
マシンキーの一貫性の確保:
両方のアプリケーションは、それぞれの machineKey
ファイルで定義された同じ web.config
設定を使用する必要があります。
<code class="language-xml"><machineKey decryption="AES" validation="SHA1" validationKey="SOMEKEY"/></code>
これらの変更を実装することで、両方のアプリケーションがセッション データをシームレスに共有し、同一のセッション キーを利用し、アプリケーション間で一貫したフォーム認証を維持できるようになります。
以上が.NET 2.0 Web フォームと .NET 3.5 MVC2 アプリケーションの間で ASP.NET セッション状態を共有するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。