.NET アプリケーションでのフレームワーク間のセッション共有の有効化
問題:
同じサーバー上にデプロイされた 2 つの Web アプリケーション (1 つは .NET 2.0 上に構築され、もう 1 つは .NET 3.5 (MVC2) 上に構築されている) は、共有セッション状態を必要とします。 StateServer
モードと接続文字列の構成が同一であるにもかかわらず、MVC2 アプリケーションは .NET 2.0 アプリケーションによって開始されたセッションの取得に失敗します。
解決策:
異なるフレームワークを使用した .NET アプリケーション間の直接セッション共有は、本質的にサポートされていません。一元化されたセッション管理ソリューションまたはデータベースを利用したセッション ストアが必要です。
実装:
両方のアプリケーションにアクセスできる共有セッションプロバイダーを採用します。 組み込みの SQL Server セッション プロバイダーが適切な選択肢です。 両方のアプリケーションの web.config
ファイルを次のように構成します:
sessionState
構成:<code class="language-xml"><sessionState mode="SQLServer" sqlConnectionString="..." /></code>
machineKey
構成:<code class="language-xml"><machineKey decryption="AES" validation="SHA1" validationKey="..." /></code>
重要なのは、両方のアプリケーションが同じ SQL Server データベースに接続する必要があることです。 さらに、TempGetAppID
ストアド プロシージャは、関連する MSDN ドキュメントで詳しく説明されているように変更が必要になる場合があります (ドキュメントへのリンクがある場合は、ここにリンクすると役立ちます)。
一貫した machineKey
と共有セッション プロバイダーを使用することで、両方のアプリケーションがセッション キーとフォーム認証 Cookie を正常に共有でき、異なる .NET Framework バージョン間でシームレスなセッション管理が可能になります。
以上が異なるフレームワークを使用する 2 つの .NET アプリケーションがセッション状態を共有するにはどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。