2012-09-25 107 views
0

我在觀察一個奇怪的情況,我希望有人有一些洞察力。這不是一個理想的情況(試圖支持遺留的東西)。我正在觀察的是這個例子:負載平衡的HttpContext.Current.Session

我在我的負載平衡服務器池中有一臺服務器。在從負載平衡url加載的外部頁面中,我將一些值填充到Page_Load中的HttpContext.Current.Session中。

在該頁面上是從特定服務器url(與負載平衡頁面命中的服務器相同)加載內部頁面的iframe。內頁的Page_Load中的HttpContext.Current.Session沒有我剛從外頁面填入的值。

我曾經認爲這將是特定的機器無論是在用戶的cookie中。 HttpContext.Current.Session是否依賴於url?

回答

1

這裏有很多因素。首先,你確定它是從同一臺機器加載網址嗎?請記住,iframe是基於客戶端的,而不是基於服務器的。這意味着當iframe加載另一個頁面時,它也會通過負載平衡器,除非您有一些機制來確保它保持在同一頁面上(例如粘滯會話)。

其次,您正在使用iframe使用相同域名的網址?都使用相同的傳輸(http或https)?如果其中任何一個不同,它將爲iframe創建一個新的會話。

+0

是的,外部頁面知道它結束的實際服務器,並將該服務器的URL寫入iframe源。爲了進行調試,我在池中也只有一臺服務器。 –

+0

但是,負載平衡url使用不同的子域。這將是一個單獨的會議? –

+0

是的,它可以。但是,您可以解決這個問題,確保會話cookie域看起來像這樣:'.mydomain.com'而不是'mydomain.com'。 –