SQL Serverをセッションマネージャーとして使用してサイト間でセッションを共有できます。これらの手順に従って実行しましたが、うまく機能します。
これらの手順は次の場所から実行されます。ドメイン間でASP.netセッションを共有する
ASP.NETアプリケーション:CSASPNETShareSessionBetweenSubDomainsプロジェクトの概要
概要:
セッションは、さまざまなモード(InProc、SqlServer、およびStateServer)に設定できます。SqlServer / SateServerモードを使用する場合、Sessionは特定のSQL Server /SateServerに格納されます。2つのASP.NETWebアプリケーションがSessionServerと同じSQLServerを指定している場合、すべてのセッションは同じデータベースに格納されます。全体として、SQL Serverセッションを使用している場合は、異なるASP.NETアプリケーション間でセッションを共有できます。ASP.NETは現在のセッションを指定するためにセッションIDをCookieに保存するため、セッションを共有するには、CookieでセッションIDを共有する必要があります。
CSASPNETShareSessionBetweenSubDomainsサンプルは、SessionStateサーバーを構成してから、SharedSessionModuleモジュールを作成して、サブドメインASP.NETWebアプリケーション間でセッションを共有する方法を示しています。
2つのASP.NETWebアプリケーションを同じルートドメインで実行する必要があります(異なるポートを使用できます)。手順:
ASP.NETセッション状態を格納するようにSQLServerを構成します。
「C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ aspnet_regsql.exe-S localhost \ sqlexpress -E -ssadd」を実行して、セッション状態のサポートをSql ServerExpress1に追加します。
SQL Serverにセッション状態を追加していない場合、SQL Serverモードのセッション状態を使用するようにWebサイトを構成すると、「無効なオブジェクト名'tempdb.dbo.ASPStateTempSessions'」というSystem.Data.SqlClient.SqlExceptionがスローされます。
SQL Serverを使用してセッションを保存し、特定のdecryptionKeyとvalidationKeyを使用するようにASP.NETWebアプリケーションを構成します。
SQL Serverセッション状態を使用するには、次の設定をweb.configファイルに追加します。
この設定をweb.configに追加して、特定のdecryptionKeyとvalidationKeyを使用します。
IISでアプリケーションをホストする場合は、データベースにログインできるアカウントでアプリケーションプールを実行してください。そうしないと、System.Data.SqlClient.SqlExceptionがスローされ、「ログインによって要求されたデータベース'ASPState'を開くことができません。ログインに失敗しました。」と表示されます。
共有セッションのロジックを実現するSharedSessionModuleモジュールを作成する
a。Init()メソッドを実装して、web.configから読み取ったアプリケーションIDを設定します。
b。PostRequestHandlerExecuteイベントを実装して、同じドメインとルートパスを持つCookieにセッションIDを保存します。
SharedSessionModuleモジュールを使用するようにASP.NETWebアプリケーションを構成します。SharedSessionModuleモジュールを使用するには、この構成をweb.configに追加します。
localhost以外の独自のドメインでアプリケーションを実行する場合は、
公開後にRootDomainの値を変更することを忘れないでください。
実行してテストします。新しいWebページを追加します。b。2つのボタン(ページの更新とセッションの設定に使用)と、セッション値を表示するための1つのラベルを追加します。c。Page_PreRender()メソッドで、Sessionを読み取り、Labelに表示します。ボタンクリックイベントで、値をセッションに設定します。d。Webサイト1と同じ構成で新しいWebサイトを作成しますが、セッションeに異なる値を設定します。次に、2つのタブで2つのサイトを開きます。これで、site1でSession Valueを設定すると、site2で同じ値を取得できます。したがって、同じセッションを使用します。
1SQLServerからセッション状態を削除します。「C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ aspnet_regsql.exe-S localhost \ sqlexpress -E -ssremove」を実行して、SQLServerからセッション状態のサポートを削除します。