在
asp.net
的程式中要使用
session
物件時,必須確保頁面的
@page
指令中enablesessionstate
屬性是true
或者readonly
,並且在
web.config
檔案中正確的設定了
sessionstate
屬性。asp.net
中session
的狀態保持是由
web.config
檔案中的標記下的標記的
mode
屬性來決定的。該屬性有四種可能的值:
off、
inproc
、stateserver
和sqlserver。設為
off會禁用
session
。inproc
是預設的設定
,這種模式和以前的
asp的會話狀態的方法是類似的
,會話的狀態會被儲存在
asp.net
程序中,它的優點是顯而易見的:效能。程序內的資料訪問自然會比誇程序的訪問快。然而,這種方法
session
的狀態依賴於
asp.net
程序,當
iis程序崩潰或者正常重起啟時,儲存在程序中的狀態將丟失。
為了克服
inproc
模式的缺點,
asp.net
提供了兩種程序外保持會話狀態的方法。
asp.net
首先提供了提供了乙個
windows
服務:aspstate,
這個服務啟動後,
asp.net
應用程式可以將
mode
屬性設定為
「sateserver」,
來使用這個
windows
服務提供的狀態管理方法。
除了在web.config
檔案中設定
mode
屬性為stateserver
外,還必須設定執行
stateserver
伺服器的
ip位址和埠號
.1、如果在
iis所在的機器執行
stateserver則ip
位址就是
127.0.0.1,
埠號通常是
42424.
配置如下:
mode=」stateserver」
stateconnectionstring="tcpip=127.0.0.1:42424"
2、找一台伺服器作為session伺服器(如ip為:192.168.1.244),啟動其windows中的asp.net state service(預設的埠號為42424),把啟動型別改為自動;
3、 修改session伺服器登錄檔中的項hkey_local_machine\system\currentcontrolset\services \aspnet_state\parameters中的allowremoteconnection 鍵的值為1,其中的port鍵控制asp.net state service的監聽埠;修改後需要重啟asp.net state service才生效;
4、每台伺服器的web。config 的
stateconnectionstring都指向這台伺服器
使用這種模式
,會話狀態的儲存將不依賴
iis程序的失敗或者重啟
,會話的狀態將儲存在
stateserver
程序的記憶體空間中。
另一種會話狀態模式是
sqlserver
模式。這種模式是將會話的狀態儲存在
sql server
資料庫中的。使用這種模式前,必須至少有一台
sql server
伺服器,並在伺服器中建立需要的表和儲存過程。
.net sdk
提供了兩個指令碼來簡化這個工作:
installsqlstate.sql
和uninstallsqlstate.sql
。這兩國檔案存放在下面路徑中:
winntmicrosoft.netframework
要配置sql server
伺服器,可以在命令列中執行
sql server
提供的命令列工具
osql.exe
osql -s [server name] -u [user] -p [password]
例如:osql -s (local) -u as -p 「」-i installsqlstate.sql
做好必要的資料庫準備工作後,將
web.config
檔案中的
sessionstate
元素的mode
屬性改為
」sqlserver」,
並指定sql
連線字串。具體如下:
mode="sqlserver"
sqlconnectionstring="data source=127.0.0.1;userid=sa;password=;trusted_connection
=yes"
使用sqlserver
模式處了可以使
session
的狀態不依賴於
iis伺服器之外,還可以利用
sql server
的集群,使狀態儲存不依賴於單個的
sql server,
這樣就可以為應用程式提供極大的可靠性。
解決nginx負載均衡的session共享問題
之前有寫過ubuntu環境下搭建nginx環境,今天來談一下nginx session共享問題,查了一些資料,看了一些別人寫的文件,總結如下,實現nginx session的共享伺服器有多台,用nginx做負載均衡,這樣同乙個ip訪問同乙個頁面會被分配到不同的伺服器上,如果session不同步的話,...
解決nginx負載均衡的session共享問題
之前有寫過ubuntu環境下搭建nginx環境,今天來談一下nginx session共享問題,查了一些資料,看了一些別人寫的文件,總結如下,實現nginx session的共享伺服器有多台,用nginx做負載均衡,這樣同乙個ip訪問同乙個頁面會被分配到不同的伺服器上,如果session不同步的話,...
伺服器負載均衡演算法
3.1 伺服器負載均衡演算法 big ip是一台對流量和內容進行管理分配的裝置。它提供10種靈活的演算法將資料流有效地 到它所連線的伺服器群。而面對使用者,只是一台虛擬伺服器。使用者此時只須記住一台伺服器,即虛擬伺服器。但他們的資料流卻被big ip靈活地均衡到所有的伺服器。這10種演算法包括 輪詢...