1

私が2つのドメインを持っているとしましょう

1. abc.com
2. xyz.com

今、私がやりたいことは、両方のサイトにインデックスページがあり、両方のインデックスページに画像がありますが、[次へ]をクリックして画像が同時にabc.com変更されると、SQLサーバーでセッション変数を作成しました。2秒後にajax関数によって自動的に更新される のインデックスページに移動しabc.comます。ページが更新されると、サーバーにリクエストを送信し、を使用して保存したセッションから次の画像名を選択します。最新の画像....注。両方のサイトが同じサーバーを使用していますabc.comxyz.comxyz.comabc.comxyz.com

これはできますか?。はいの場合、どのように?

4

1 に答える 1

3

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アプリケーションを同じルートドメインで実行する必要があります(異なるポートを使用できます)。手順:

  1. 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がスローされます。

  2. SQL Serverを使用してセッションを保存し、特定のdecryptionKeyとvalidationKeyを使用するようにASP.NETWebアプリケーションを構成します。

    SQL Serverセッション状態を使用するには、次の設定をweb.configファイルに追加します。

    この設定をweb.configに追加して、特定のdecryptionKeyとvalidationKeyを使用します。

    IISでアプリケーションをホストする場合は、データベースにログインできるアカウントでアプリケーションプールを実行してください。そうしないと、System.Data.SqlClient.SqlExceptionがスローされ、「ログインによって要求されたデータベース'ASPState'を開くことができません。ログインに失敗しました。」と表示されます。

  3. 共有セッションのロジックを実現するSharedSessionModuleモジュールを作成する

    a。Init()メソッドを実装して、web.configから読み取ったアプリケーションIDを設定します。

    b。PostRequestHandlerExecuteイベントを実装して、同じドメインとルートパスを持つCookieにセッションIDを保存します。

  4. SharedSessionModuleモジュールを使用するようにASP.NETWebアプリケーションを構成します。SharedSessionModuleモジュールを使用するには、この構成をweb.configに追加します。

    localhost以外の独自のドメインでアプリケーションを実行する場合は、
    公開後にRootDomainの値を変更することを忘れないでください。

  5. 実行してテストします。新しい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からセッション状態のサポートを削除します。

于 2012-05-31T10:03:38.287 に答える