同桌上课用手指进去了好爽_欧美丰满熟妇xxⅹⅹ性大i_成人av天天日天天拍拍_猛男gay帅男gay男男同志_欧美va天堂在线观看_人妻无码av中文系列三里桃花_亚欧免费无码在线观看_久久久精品国产亚洲av水_日韩在线免费看污污污_2021无码专区人妻系列日韩

首頁 優(yōu)化推廣 asp.net session 介紹一三種Session存儲(chǔ)方式

asp.net session 介紹一三種Session存儲(chǔ)方式

來源: | 時(shí)間:2012/12/25 21:17:11 |

對于asp.net的程序來說,session是一個(gè)必需要了解的對象。
下面就對session做一個(gè)具體介紹。


簡單來說,Session就是服務(wù)器給客戶端的一個(gè)編號(hào),當(dāng)一臺(tái)web服務(wù)器運(yùn)行時(shí),可能是有多個(gè)用戶都在瀏覽這臺(tái)服務(wù)器上的網(wǎng)站,當(dāng)每個(gè)用戶首次與這臺(tái)服務(wù)器建立連接時(shí),它就與這個(gè)服務(wù)器建立了一個(gè)Session,同時(shí)服務(wù)器就會(huì)自動(dòng)為其分配一個(gè)SessionId,用以標(biāo)識(shí)這個(gè)用戶的唯一身分,這個(gè)Session就是有服務(wù)器隨機(jī)產(chǎn)生的一個(gè)由24個(gè)字符組成的字符串。

         這個(gè)唯一的SessionId還是有很大的實(shí)際意義,當(dāng)一個(gè)用戶提交表單時(shí),瀏覽器就會(huì)將用戶的SessionId自動(dòng)附加在HTTP頭信息中,當(dāng)服務(wù)器處理完這個(gè)表單后,就會(huì)將結(jié)果返回給SessionId所對應(yīng)的用戶。

          如下是Web.config如何配置Session的:

           <configuration>
  <system.web>
    <sessionState mode=" Off | InProc | StateServer | SQLServer "
                       cookieless=" true | false "
                       timeout=" number of minutes "
                       stateConnectionString=" tcpip=server:port "
                       sqlConnectionString=" sql connection string "
                       stateNetworkTimeout=" number of seconds " />
  </system.web>
</configuration>

其中各個(gè)節(jié)點(diǎn)屬性:
mode: Session的存儲(chǔ)方式(必有的屬性)。
           InProc:將Session存到進(jìn)程內(nèi)(這是Default值。)
           off:禁用Session.
           StateServer:將Session存到獨(dú)立的狀態(tài)服務(wù)中(Asp.net State Service).
           SqlServer:將Session存到SqlServer中。
Cookieless:設(shè)置客戶端Session存儲(chǔ)的方式。
                 false:使用Cookie模式(default).
                 true:使用Cookieless模式。
timeout:設(shè)置Session過期時(shí)間(default is 20 minutes)
stateConnectionString: 設(shè)置Session獨(dú)立存放的狀態(tài)服務(wù)所在服務(wù)器的名稱(地址)和端口號(hào),當(dāng)mode=&ldquo;stateserver時(shí),這個(gè)屬性就是必須的。
     sqlConnectionString:設(shè)置與Sqlserver的連接字符串,當(dāng)mode="sqlserver"時(shí),這個(gè)屬性時(shí)必須的。
stateNetWorkTimeout:設(shè)置當(dāng)mode=&ldquo;StateServer&rdquo;時(shí),經(jīng)過多少秒空閑后,斷開web服務(wù)器與存儲(chǔ)狀態(tài)信息服務(wù)器的TCP/IP連接(default is 10 seconds).

asp.net中客戶端Session的存儲(chǔ)。
      asp.net中,默認(rèn)是使用Cookie存儲(chǔ)Session的,如果是將cookieless="false",改成cookieless="true",則session就不用cookie來存儲(chǔ)了,而是使用url來存儲(chǔ)。

 asp.net服務(wù)器端session存儲(chǔ)在進(jìn)程內(nèi)(inproc)
      當(dāng)mode="Inproc"時(shí),服務(wù)器的Session存儲(chǔ)在IIS進(jìn)程中,當(dāng)IIS關(guān)閉,重啟時(shí),這些Session信息就會(huì)丟失,但這種模式最大的好處就是性能提高。

      asp.net服務(wù)器端Session存儲(chǔ)在進(jìn)程外(StateServer)
     當(dāng)mode="StateServer"時(shí),服務(wù)器的Session就存儲(chǔ)在"ASP.NET State Server"這個(gè)服務(wù)的進(jìn)程中,在服務(wù)中找到名為:&ldquo;ASP.NET State Service&rdquo;的服務(wù),啟動(dòng)這個(gè)服務(wù),在資源管理器的進(jìn)程中就能找到一個(gè)名為:&ldquo;aspnet_state.exe"的進(jìn)程,這個(gè)就是我們保存 Session的進(jìn)程。
      &rdquo;ASP.NET State Server"服務(wù)可以與Web服務(wù)器分開.eg:web服務(wù)器在192.168.0.100上,&ldquo;asp.net state service"服務(wù)在192.168.0.101上,則可以進(jìn)行設(shè)置:
     mode="StateServer" stateConnection="tcpip=192.168.1.101:42424".

     asp.net服務(wù)器端Session存儲(chǔ)到SQLServer中(SQLServer),
    當(dāng)mode="sqlserver"時(shí),服務(wù)器的Session就是存儲(chǔ)到Sql server中建立一個(gè)存儲(chǔ)Session的數(shù)據(jù)庫。在
 %windir%/Microsoft.NET/Framework/v2.0.50727 下有個(gè)名為: InstallSqlState.sql 的sql腳本文件. 這個(gè)腳本是專門用來建存儲(chǔ)Session的數(shù)據(jù)庫以及一個(gè)維護(hù)Session信息數(shù)據(jù)庫的SQL Server代理作業(yè)的.

      執(zhí)行此sql腳本后,會(huì)看到一個(gè)新增的aspstate數(shù)據(jù)庫,但這個(gè)數(shù)據(jù)庫中,只有存儲(chǔ)過程,沒有用戶表,用戶表放到了tempdb這個(gè)數(shù)據(jù)庫中去了,ASpstateTempSessions和ASPStateTempApplications,Session信息存儲(chǔ)到了 ASPStateTempApplication存儲(chǔ)了asp中Application對象信息。

    另外查看管理->SQL Server代理->作業(yè),會(huì)發(fā)現(xiàn)多了一個(gè)名為:

ASPState_job_DeleteExpiredSession的作業(yè),這個(gè)作業(yè)實(shí)際上是每分鐘去ASPStateTempSession中刪除過期的Session信息。

      上面的方法是建立Session數(shù)據(jù)庫的一個(gè)”官方“方法,但在實(shí)際的應(yīng)用中一般沒這么去建,而是采用另一種方法,使用下面這段命令來自動(dòng)創(chuàng)建Session數(shù)據(jù)庫:

 

aspnet_regsql.exe -S ServerName/InstanceName -U User -P Password -d DBName -ssadd -sstype c

      此命令將在ServerName/InstanceName建立DBName的數(shù)據(jù)庫, 用戶存儲(chǔ)Session的數(shù)據(jù)庫. 此數(shù)據(jù)庫中包含了存儲(chǔ)過程和用戶表.  同時(shí)在SQL Server代理 -> 作業(yè) 中也加入了相應(yīng)的作業(yè).

      然后在Web.config中設(shè)置好配置信息:

mode="SQLServer" sqlConnectionString="data source=ServerName/InstanceName; Integrated Security=SSPI;"

      "Integrated Security=SSPI;" 是指使用Windows集成身份驗(yàn)證.

       如果使用SQL用戶登陸方式. 則在sqlConnectionString中設(shè)置好"userid=sa; password=×××".

      這樣一來就可以將Session存放到SQLServer中了

服務(wù)熱線

153 8323 9821

功能和特性

價(jià)格和優(yōu)惠

網(wǎng)站和維護(hù)

推廣和優(yōu)化

微信服務(wù)號(hào)