asp.net web.config中的SessionState的設置


SessionSate設置

sessionState設置為我們asp.net中的session配置方式
<sessionState mode="InProc" cookieless="false" timeout="120"/>

說明mode設置方式    timeout超時時間 (分鍾)  cookieless是否啟用cookie

mode的幾種模式:Off、InProc、StateServer及SqlServer

Off模式

關閉模式,不需要使用Session,一般不用

<sessionState mode="Off"></sessionState>

InProc模式(默認)

<sessionState mode="InProc" cookieless="false" timeout="120"/>

模式為InProc模式是iis默認方式,Session直接存儲在IIS進程中,但session易丟失;

優點:獲取session狀態的速度快,session狀態直接存儲在iis的進程中

缺點:易丟失;

ASP.NET進程(aspnet_wp.exe)、IIS進程(w3wp.exe)默認的20分鍾重啟應用程序;緩沖池填滿后重啟;進程保護措施重啟;等都會導致進程重啟,從而導致session丟失;

在開發的時候,對應用有一點修改,就會導致應用的重啟,這時候如果使用InProc模式 ,那么每次都需要重新登錄,比較浪費時間.建議使用StateServer模式。並在iis里面設置超時時間長一些

StateServer模式(推薦方式)

<sessionState mode="StateServer" cookieless="false" timeout="120" stateConnectionString="tcpip=127.0.0.1:42424" />

mode設置為"StateServer"時,Session 存儲在單獨的內存緩沖區中,再由單獨一台服務器上運行的ASP.NET State Service(aspnet_state.exe)來控制這個緩沖區。

如果 stateConnectionString中配置的是127.0.0.1則為服務器本機;

注意:需要啟動ASP.net State service 狀態服務

優點:session狀態單獨存儲在一個進程中,不會因為iis或者應用的重啟而丟失狀態。

缺點:

a、由於是兩個不同的進程,獲取Session數據比InProc慢;

b、Session數據存儲在內存中,重啟ASP.NET State Service服務,Session數據將丟失。

    以上設置的ASP.NET State Service在127.0.0.1的42424端口(默認端口)上運行,要在服務器上改變端口,可編輯HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\aspnet_state\Parameters注冊表項中的Port值。(打開注冊表方式:運行 regedit)

   如果stateConnectionString的值不是127.0.0.1或者localhost等代表本地地址的值,需要修改注冊表:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\aspnet_state \Parameters 節點 → 將 AllowRemoteConnection 的鍵值設置成“1”(1 為允許遠程電腦的連接,0 代表禁止)→ 設置 Port (端口號) 

SqlServer模式

mode設置為"SqlServer"時,Session存儲在SQL Server數據庫中持久化保持,ASP.NET嘗試將會話數據存儲到由sqlConnectionString屬性(其中包含數據源以及登錄服務器所需的安全憑證)指定的SQL Server中。

 

參照:

https://www.cnblogs.com/libingql/p/4675752.html

https://blog.csdn.net/LeehomeYU/article/details/74909611?utm_source=blogxgwz5


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM