2010-03-08 36 views
8

我正在開發一個站點,該站點需要在同一個域上共享cms應用程序和在線商店應用程序之間的會話。在使用SQL Server的2個ASP.NET應用程序之間共享會話狀態

mydomain.com 

store.mydomain.com 

我已經取得了一些進展與它和它的作品在我的本地構建

localhost/cms 

localhost/store 

基本上我已經做之間這是什麼建議文章

http://blogs.msdn.com/toddca/archive/2007/01/25/sharing-asp-net-session-state-across-applications.aspx

和黑客入侵TempGetAppID存儲過程返回相同的應用ID(1)。這似乎很有用,因爲它會創建與'abv5d2urx1asscfwuzw3wp4500000001'這樣的ID的會話,這正是我所期望的。

我的問題是,當我將它部署到我們的測試環境中時,它會在兩個站點之間導航時創建一個新會話。因此,當我在cms網站上開始會話時,如果我導航到商店,它會創建一個新會話。這些在IIS7中設置爲2個不同的網站。

在爲這兩個網站的web.config文件中,和元素都是相同的,如下(減敏感信息)

有沒有人有一個想法,爲什麼這可能不工作?我在兩個站點上共享表單身份驗證,並且工作正常。任何幫助或想法將不勝感激!

非常感謝

戴夫

回答

7

看來我們遇到的問題是會話cookie域在2個應用程序上設置不同。這意味着每個應用程序都會生成它自己的sessionId。

我們增加了 <httpCookies domain=".ourdomain.co.uk" /> 到我們的web.config中,似乎已經解決了它。感謝您的幫助,希望這有助於未來的其他人。

+1

這必須在兩個web.config文件中完成。 非常感謝,這解決了我們的問題。 – kzfabi 2012-12-24 13:34:24

6

堅持的SQL服務器上的所有會話數據,使用會話ID作爲關鍵。然後使用包含指向.mydomain.com的會話ID的cookie,以便它們在兩個子域上都可用。

article at 15 seconds涵蓋了這個問題,甚至顯示了一個技術,分享跨越完全不同的領域的會議。

+0

這就是如何跨域共享Cookie,而不是Sessions。即使您以某種方式將Cookie設置爲在同一個域中,應用程序也是不同的。這是一個解決這個問題的頁面:http://www.velocityreviews.com/forums/t108519-session-cookie-not-accessible-across-sub-domains.html – 2010-03-08 17:38:31

+0

謝謝,但這是特定於經典的asp。我確信有一些方法可以在asp中實現。而不必從cookie中獲取會話。但是,如果我錯了,我一定會嘗試在我的asp.net項目上實現這樣的事情。 – Dave 2010-03-08 17:39:16

+0

感謝nissan粉絲我會看看那個。 – Dave 2010-03-08 17:41:43

相關問題