2012-05-31 35 views
1

保持相同的會話讓假設我有兩個域如何在兩個不同的地點

1 abc.com
2. xyz.com

現在我想做的事情,我有事情這兩個網站上的索引頁,並且這兩個索引頁上都有一個圖像,但是當我在abc.com中單擊下一個圖像並在abc.com上更改圖像時,同時我在sql server中創建了一個會話變量。現在離開abc.comxyz.com xyz.com的索引頁在2秒後自動被ajax函數刷新,現在當頁面刷新時它會向服務器發出請求並從我們使用abc.com存儲的會話中挑選下一個圖像名稱,我們將在xyz.com上顯示最新圖像....注意。這兩個網站都使用相同的服務器

我可以這樣做嗎? 。如果是,那麼如何?

回答

3

您可以在使用SQL Server作爲會話管理器的站點之間共享會話,我按照這些說明做了它,運行良好。 Share ASP.net session between domains

ASP.NET應用:CSASPNETShareSessionBetweenSubDomains項目 概述

總結:

會話可以被設置爲不同的模式(是InProc,SQLSERVER,和

這些步驟取自StateServer的)。當使用SqlServer/SateServer模式時,Session將在特定的SQL Server/Sate Server中存儲 。如果兩個ASP.NET Web應用程序 指定與會話服務器相同的SQL Server,則所有會話都將在 中存儲相同的數據庫。總而言之,如果使用SQL Server Session,則可能會在不同的ASP.NET應用程序之間共享Session的 。 由於ASP.NET將會話ID存儲到cookie以指定當前會話,所以爲了共享Session,需要在 中共享會話Id的cookie。

的CSASPNETShareSessionBetweenSubDomains示例演示如何 配置一個SessionState的服務器,然後創建一個SharedSessionModule 模塊來實現子域的ASP.NET Web 應用程序之間共享會話。

兩個ASP.NET Web應用程序需要在同一個根域中運行(可以使用 使用不同的端口)。步驟:

  1. 將SQL Server配置爲存儲ASP.NET會話狀態。

    運行 「C:\ WINDOWS \ Microsoft.NET \框架\ v4.0.30319 \ aspnet_regsql.exe的 -S本地主機\ SQLEXPRESS -E -ssadd」 添加會話狀態的支持到SQL Server Express 1

    如果你還沒有加入會話狀態到SQL Server,在配置 網站使用SQL Server模式會話狀態, System.Data.SqlClient.SqlException將被拋出話說「無效 對象名稱「的tempdb .dbo.ASPStateTempSessions'。「

  2. 配置ASP.NET Web應用程序使用SQL Server存儲會話,並使用特定的decryptionKey和validationKey的

    添加此設置web.config文件中使用SQL服務器會話狀態 :

    添加此設置web.config中使用特定decryptionKey和 的validationKey:

    如果您在IIS中託管應用程序,請在可登錄數據庫的帳戶下運行應用程序池 。否則 System.Data.SqlClient.SqlException將拋出「不能 打開登錄請求的數據庫'ASPState'。登錄失敗。」

  3. 寫SharedSessionModule模塊來實現的共享會話

    一個邏輯。實現Init()方法來設置從 web.config中讀取的應用程序ID。

    b。實施PostRequestHandlerExecute事件以將會話Id存儲到 Cookie與 相同的域和根路徑。

  4. 配置ASP.NET Web應用中使用SharedSessionModule模塊。 此配置添加到web.config中使用SharedSessionModule模塊:

    如果您在本地主機除了你自己的域的應用,
    請不要忘記之後 出版改變RootDomain的價值。

  5. 運行和測試 一個。添加一個新的網頁。灣添加兩個按鈕(用於刷新頁面和設置會話)和一個用於顯示會話值的標籤。 C。在Page_PreRender()方法中,讀取Session並將其顯​​示在Label中。在按鈕上單擊 事件,將值設置爲會話。 d。使用與網站1相同的配置創建一個新的Web站點,但將不同的值 設置爲會話e。現在在兩個選項卡中打開兩個網站。現在,如果您在站點1中設置會話值,則可以在站點2中檢索相同的值,即 。所以他們使用相同的會話。

1從Sql Server中刪除會話狀態。運行 「C:\ WINDOWS \ Microsoft.NET \框架\ v4.0.30319 \ aspnet_regsql.exe的-S 本地主機\ SQLEXPRESS -E -ssremove」 從SQL Server刪除會話狀態的支持 。

相關問題