2012-03-27 16 views
1

基本上我的問題是我有一個網站,這是在3年前開發的,而開發則建議這個網站將會被少數人在互聯網上使用。我們如何才能將網站的會話狀態從一個州改變爲另一個州

但現在好像很多用戶正在訪問該網站。所以我們計劃創建一個Web服務器農場,我們的網站上有多臺服務器。在發展

主要問題是舊的網站上使用InProc會話狀態,現在,因爲我們正在升級到多臺服務器,我們想改變InProcOutproc即StateServer會話狀態。

您可以指導我進行升級嗎?如何以簡單易行的方式實現,而不是在使用會話的每個頁面上更改編碼。

+0

你的意思是你設置了一個SQL來保持會話狀態,對吧? – Aristos 2012-03-27 10:46:05

+0

雅它可以是SQLServer或StateServer任何更高效的。我困惑在@MassimilianoPeluso回答他的意思是什麼序列化? – Murtaza 2012-03-27 10:49:22

+0

這就是MSDN所說的:如果模式設置爲StateServer,則存儲在會話狀態中的對象必須是可序列化的。有關可序列化對象的信息,請參見SerializableAttribute類。 – 2012-03-27 10:54:05

回答

1

你會在這裏得到的是,你的網站移動到很多網絡服務器,這裏的實際問題是「如何保持每個用戶關於服務器的相同狀態」。

有兩種選擇。

第一選項是設置的用戶分流到服務器,使用「粘性選項」,這意味着每個用戶堅持使用其會話到一臺服務器,且只有一個路由器。在這種情況下,如果您使用inproc或sql server會話,則無關緊要,只要路由器做得很好。當然,您不會使用任何其他數據庫來處理常見數據。

第二個選項是使用sql server並將會話移動到服務器,但這裏服務器必須位於一臺服務器上,而其他服務器從此服務器獲取其會話數據。你也可以在web.config中爲所有Web服務器設置相同的密鑰機器。

因此,對於這種情況你需要。

  1. 要設置一個服務器上的共享/共享SQL服務器
  2. 要在此安裝會話數據庫(實際運行從asp.net腳本)
  3. 設置web.config中使用這個數據庫會話
  4. 設置web.config具有相同的機器密鑰。

如果您將數據庫用於其他數據,則將該數據庫與會話數據庫放在一起,並且還可以將共享連接到該數據庫。這裏的要點是數據必須在一臺計算機上運行,​​其他計算機連接到這個數據的主要數據。

+0

的說明,這很清楚!但我想問你,所有那些已經創建的會話是什麼。如果我在'web.config'中做這個改變,我現在的代碼行會出錯? – Murtaza 2012-03-27 11:10:54

+0

@Murtaza所有準備好的會議都會丟失,新的會被製作出來。沒有會議工作相同,無論你使用的媒體 – Aristos 2012-03-27 11:33:34

+0

這真的很令人頭腦的答案......非常感謝。希望這對許多人有用 – Murtaza 2012-03-27 11:59:47

相關問題