ASP.NET セッション状態サービスを使用してアプリケーション間でセッションを共有する
質問:
1 つのサーバー上でホストされている 2 つの Web アプリケーション間でセッションを共有するにはどうすればよいですか? 1 つのアプリケーションは .NET 2.0 Web フォーム アプリケーションで、もう 1 つは .NET 3.5 MVC2 アプリケーションです。
答え:
ASP.NET セッション状態サービスを使用してアプリケーション間でセッションを共有するには、次の手順に従います。
両方のアプリケーションでセッション状態を構成します: 両方の web.config ファイルでセッション状態モードを「SQLServer」に設定し、同じ接続文字列とマシン キーを指定します。
セッション状態データベースを設定します: 両方のアプリケーションにアクセスできるサーバー上にデータベースを作成し、「aspnet_regsql」コマンドを実行してセッション状態テーブルを設定します。
ストアド プロシージャを変更します: セッション状態データベースの "TempGetAppID" ストアド プロシージャを変更して、接続文字列で指定されたアプリケーション名を使用し、両方のアプリケーションで同じアプリケーション名が指定されるようにします。
共有セッションキー: Web フォーム アプリケーションで、セッション キーを MVC アプリケーションに公開します。 MVC アプリケーションでは、セッション ID を保存および取得するカスタム ロジックを実装することにより、セッション キーを取得し、それを使用してセッション データを読み込みます。
実装例:
Web フォーム アプリケーションの場合:
<code class="language-csharp">protected void LinkButton1_Click(object sender, EventArgs e) { Session["myvariable"] = "dan"; string sessionKey = HttpContext.Current.Session.SessionID; // 后续代码将sessionKey发布到另一个应用程序 }</code>
MVC アプリケーションの場合:
<code class="language-csharp">[HttpPost] public void Recieve(string sessionKey) { var manager = new SessionIDManager(); bool redirected; bool IsAdded; manager.SaveSessionID(HttpContext.ApplicationInstance.Context, sessionKey, out redirected, out IsAdded); var myVar = Session["myvariable"]; }</code>
セッション ID の保存と取得を処理するには、SessionIDManager
カスタム実装が必要であることに注意してください。 この例では基本的なフレームワークのみを提供します。実際の実装では、異なるアプリケーション間でのセッション データの転送と保存を処理するために、より複雑なロジックが必要になる場合があります。 さらに、セッション キーの送信が安全であることを保証するために、セキュリティについても慎重に考慮する必要があります。
以上が.NET 2.0 Web フォームと .NET 3.5 MVC2 アプリケーションの間でセッション状態を共有するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。