掃描二維碼關注

首頁 APP開(kāi)發小(xiǎo)程序開(kāi)發 微信公衆号 網站建設 營銷推廣 經典案列 産品服務 關于我們

“學習(xí)不僅是掌握知識”

向書(shū)本學習(xí),還要向實踐學習(xí)、向生活學習(xí)。消化已有(yǒu)知識,
而且要力求有(yǒu)所發現、有(yǒu)所發明(míng)、有(yǒu)所創造

ASP.NET 中Session的(de)狀态保持方式

2019/3/14 8:48:36

ASP.NET 中Session的(de)狀态保持方式

ASP.NET提供了Session對象,從而允許程序員識别、存儲和(hé)處理(lǐ)同一個(gè)浏覽器(qì)對象對服務器(qì)上(shàng)某個(gè)特定網絡應用(yòng)程序的(de)若幹次請求的(de)上(shàng)下文(wén)信息。Session對應浏覽器(qì)與服務器(qì)的(de)同一次對話(huà),在浏覽器(qì)第一請求網絡應用(yòng)程序的(de)某個(gè)頁面時,服務器(qì)會(huì)觸發Session_onStart事件(jiàn);在對話(huà)超時或者被關閉的(de)時候會(huì)觸發Session_onEnd 事件(jiàn)。程序員可(kě)以在代碼中響應這兩個(gè)事件(jiàn)來處理(lǐ)與同一次對話(huà)相(xiàng)關的(de)任務,如(rú)開(kāi)辟和(hé)釋放(fàng)該次對話(huà)要使用(yòng)的(de)資源等。

   在ASP.NET的(de)程序中要使用(yòng)Session對象時,必須确保頁面的(de)@page指令中EnableSessionState屬性是True或者Readonly,并且在web.config文(wén)件(jiàn)中正确的(de)設置了SessionState屬性。

  ASP.NET中Session的(de)狀态保持是由web.config文(wén)件(jiàn)中的(de)<system.web>标記下的(de)<sessionstate>标記的(de)mode屬性來決定的(de)。該屬性有(yǒu)四種可(kě)能(néng)的(de)值:Off、Inproc、StateServer和(hé)SQlServer.

  設爲Off會(huì)禁用(yòng)Session.

  Inproc是缺省的(de)設置,這種模式和(hé)以前的(de)ASP的(de)會(huì)話(huà)狀态的(de)方法是類似的(de),會(huì)話(huà)的(de)狀态會(huì)被保存在ASP.NET進程中,它的(de)優點是顯而易見的(de):性能(néng)。進程内的(de)數據訪問自然會(huì)比誇進程的(de)訪問快。然而,這種方法Session的(de)狀态依賴于ASP.NET進程,當IIS進程崩潰或者正常重起啓時,保存在進程中的(de)狀态将丢失。

  爲了克服Inproc模式的(de)缺點,ASP.NET提供了兩種進程外保持會(huì)話(huà)狀态的(de)方法。

  ASP.NET首先提供了提供了一個(gè)Windows服務:ASPState,這個(gè)服務啓動後,ASP.NET應用(yòng)程序可(kě)以将mode屬性設置爲“SateServer”,來使用(yòng)這個(gè)Windows服務提供的(de)狀态管理(lǐ)方法。

  除了在web.config文(wén)件(jiàn)中設置mode屬性爲StateServer外,還必須設置運行(xíng)StateServer服務器(qì)的(de)IP地(dì)址和(hé)端口号.如(rú)果在IIS所在的(de)機器(qì)運行(xíng)StateServer則IP地(dì)址就是127.0.0.1,端口号通常是42424.配置如(rú)下:

mode=”StateServer”

stateConnectionString="tcpip=127.0.0.1:42424"

    使用(yòng)這種模式,會(huì)話(huà)狀态的(de)存儲将不依賴IIS進程的(de)失敗或者重啓,會(huì)話(huà)的(de)狀态将存儲在StateServer進程的(de)内存空間中。

   另一種會(huì)話(huà)狀态模式是SQLServer模式。這種模式是将會(huì)話(huà)的(de)狀态保存在SQL Server數據庫中的(de)。使用(yòng)這種模式前,必須至少(shǎo)有(yǒu)一台SQL Server服務器(qì),并在服務器(qì)中建立需要的(de)表和(hé)存儲過程。.NET SDK提供了兩個(gè)腳本來簡化這個(gè)工(gōng)作:InstallSqlState.sql和(hé)UnInstallSqlState.sql。這兩國文(wén)件(jiàn)存放(fàng)在下面路(lù)徑中:

  <%SYSTEMDRIVER%>\Winnt\Microsoft.NET\Framework\<%version%>\

要配置SQL Server 服務器(qì),可(kě)以在命令行(xíng)中運行(xíng)SQL Server提供的(de)命令行(xíng)工(gōng)具osql.exe

  osql -s [server name] -u [user] -p [password] <InstallSqlState.sql

例如(rú):

  osql -s (local) -u as -p “”-i  InstallSqlState.sql

做好必要的(de)數據庫準備工(gōng)作後,将web.config文(wén)件(jiàn)中的(de)sessionstate元素的(de)mode屬性改爲”sqlserver”,并指定SQL連接字符串。具體如(rú)下:

  mode="SQLServer"

    sqlConnectionString="data source=127.0.0.1;userid=sa;password=;Trusted_Connection=yes"

使用(yòng)SQLServer模式處了可(kě)以使Session的(de)狀态不依賴于IIS服務器(qì)之外,還可(kě)以利用(yòng)SQL Server的(de)集群,使狀态存儲不依賴于單個(gè)的(de)SQL Server,這樣就可(kě)以爲應用(yòng)程序提供極大(dà)的(de)可(kě)靠性。


深圳市南山區南山街(jiē)道南海(hǎi)大(dà)道西(xī)桂廟路(lù)北陽光(guāng)華藝大(dà)廈1棟4F、4G-04

咨詢電話(huà):136 8237 6272
大(dà)客戶咨詢:139 0290 5075
業(yè)務QQ:195006118
技術(shù)QQ:179981967

更多可(kě)以了解的(de)信息

客戶案列
新聞資訊
資質榮譽
團隊風采
項目進度查詢

售前QQ咨詢
QQ溝通 項目QQ溝通

精銳軟件(jiàn)

Copyright© 2018-2023 深圳市無窮大軟件技術有限公司 All Rights Reserved. 京ICP證000000号 公安備案号:粵公網安備44030502009460号