最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

session的存儲(chǔ)方式和配置方法介紹

 更新時(shí)間:2012年05月07日 22:42:56   作者:  
Session又稱為會(huì)話狀態(tài),是Web系統(tǒng)中最常用的狀態(tài),用于維護(hù)和當(dāng)前瀏覽器實(shí)例相關(guān)的一些信息。我們控制用戶去權(quán)限中經(jīng)常用到Session來(lái)存儲(chǔ)用戶狀態(tài),這篇文章會(huì)講下Session的存儲(chǔ)方式、在web.config中如何配置Session、Session的生命周期等內(nèi)容
1、Session的存儲(chǔ)方式。

  session其實(shí)分為客戶端Session和服務(wù)器端Session。

  當(dāng)用戶首次與Web服務(wù)器建立連接的時(shí)候,服務(wù)器會(huì)給用戶分發(fā)一個(gè) SessionID作為標(biāo)識(shí)。SessionID是一個(gè)由24個(gè)字符組成的隨機(jī)字符串。用戶每次提交頁(yè)面,瀏覽器都會(huì)把這個(gè)SessionID包含在 HTTP頭中提交給Web服務(wù)器,這樣Web服務(wù)器就能區(qū)分當(dāng)前請(qǐng)求頁(yè)面的是哪一個(gè)客戶端。這個(gè)SessionID就是保存在客戶端的,屬于客戶端Session。

  其實(shí)客戶端Session默認(rèn)是以cookie的形式來(lái)存儲(chǔ)的,所以當(dāng)用戶禁用了cookie的話,服務(wù)器端就得不到SessionID。這時(shí)我們可以使用url的方式來(lái)存儲(chǔ)客戶端Session。也就是將SessionID直接寫在了url中,當(dāng)然這種方法不常用。

  我們大多數(shù)提到的Session都是指服務(wù)器端Session。他有三種存儲(chǔ)方式(自定義存儲(chǔ)在這里不做討論):

  1.1保存在IIS進(jìn)程中:

  保存在IIS進(jìn)程中是指把Session數(shù)據(jù)保存在IIS的運(yùn)行的進(jìn)程中,也就是inetinfo.exe這個(gè)進(jìn)程中,這也是默認(rèn)的Session的存方式,也是最常用的。

  這種方式的優(yōu)點(diǎn)是簡(jiǎn)單,性能最高。但是當(dāng)重啟IIS服務(wù)器時(shí)Session丟失。

  1.2.保存在StateServer上

  這種存儲(chǔ)模式是指將Session數(shù)據(jù)存儲(chǔ)在一個(gè)稱為Asp.Net狀態(tài)服務(wù)進(jìn)程中,該進(jìn)程獨(dú)立于Asp.Net輔助進(jìn)程或IIS應(yīng)用程序池的單獨(dú)進(jìn)程,使用此模式可以確保在重新啟動(dòng)Web應(yīng)用程序時(shí)保留會(huì)話狀態(tài),并使會(huì)話狀態(tài)可以用于網(wǎng)絡(luò)中的多個(gè)Web服務(wù)器。

  1.3.保存在SQL Server數(shù)據(jù)庫(kù)中

  可以配置把Session數(shù)據(jù)存儲(chǔ)到SQL Server數(shù)據(jù)庫(kù)中,為了進(jìn)行這樣的配置,程序員首先需要準(zhǔn)備SQL Server數(shù)據(jù)服務(wù)器,然后在運(yùn)行.NET自帶安裝工具安裝狀態(tài)數(shù)據(jù)庫(kù)。

  這種方式在服務(wù)器掛掉重啟后都還在,因?yàn)樗鎯?chǔ)在內(nèi)存和磁盤中。

  下面是這三種方式的比較:

InProc

StateServer

SQLServer

存儲(chǔ)物理位置

IIS進(jìn)程(內(nèi)存)

Windows服務(wù)進(jìn)程(內(nèi)存)

SQLServer數(shù)據(jù)庫(kù)(磁盤)

存儲(chǔ)類型限制

無(wú)限制

可以序列化的類型

可以序列化的類型

存儲(chǔ)大小限制

無(wú)限制

使用范圍

當(dāng)前請(qǐng)求上下文,對(duì)于每個(gè)用戶獨(dú)立

生命周期

第一次訪問(wèn)網(wǎng)站的時(shí)候創(chuàng)建Session超時(shí)后銷毀

優(yōu)點(diǎn)

性能比較高

Session不依賴Web服務(wù)器,不容易丟失

缺點(diǎn)

容易丟失

序列化與反序列化消耗CPU資源

序列化與反序列化消耗CPU資源,從磁盤讀取Session比較慢

使用原則

不要存放大量數(shù)據(jù)

2、在web.config中配置Session
  Web.config文件中的Session配置信息:
復(fù)制代碼 代碼如下:

<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"
/>

mode 設(shè)置將Session信息存儲(chǔ)到哪里:
    — Off 設(shè)置為不使用Session功能;
    — InProc 設(shè)置為將Session存儲(chǔ)在進(jìn)程內(nèi),就是ASP中的存儲(chǔ)方式,這是默認(rèn)值;
    — StateServer 設(shè)置為將Session存儲(chǔ)在獨(dú)立的狀態(tài)服務(wù)中;
    — SQLServer 設(shè)置將Session存儲(chǔ)在SQL Server中。
  
  cookieless 設(shè)置客戶端的Session信息存儲(chǔ)到哪里:
    — ture 使用Cookieless模式;這時(shí)客戶端的Session信息就不再使用Cookie存儲(chǔ)了,而是將其通過(guò)URL存儲(chǔ)。比如網(wǎng)址為http://localhost/MyTestApplication/(ulqsek45heu3ic2a5zgdl245)/default.aspx
    — false 使用Cookie模式,這是默認(rèn)值。

  timeout 設(shè)置經(jīng)過(guò)多少分鐘后服務(wù)器自動(dòng)放棄Session信息。默認(rèn)為20分鐘。

  stateConnectionString 設(shè)置將Session信息存儲(chǔ)在狀態(tài)服務(wù)中時(shí)使用的服務(wù)器名稱和端口號(hào),例如:"tcpip=127.0.0.1:42424”。當(dāng)mode的值是StateServer是,這個(gè)屬性是必需的。(42424是默認(rèn)端口)。

  sqlConnectionString 設(shè)置與SQL Server連接時(shí)的連接字符串。例如"data source=localhost;Integrated Security=SSPI;Initial Catalog=northwind"。當(dāng)mode的值是SQLServer時(shí),這個(gè)屬性是必需的。

  stateNetworkTimeout 設(shè)置當(dāng)使用StateServer模式存儲(chǔ)Session狀態(tài)時(shí),經(jīng)過(guò)多少秒空閑后,斷開(kāi)Web服務(wù)器與存儲(chǔ)狀態(tài)信息的服務(wù)器的TCP/IP連接的。默認(rèn)值是10秒鐘。


  下面來(lái)說(shuō)下用StateServer和SqlServer來(lái)存儲(chǔ)Session的方法

  2.1 StateServer
  第1步是打開(kāi)狀態(tài)服務(wù)。依次打開(kāi)“控制面板”→“管理工具”→“服務(wù)”命令,找到ASP.NET狀態(tài)服務(wù)一項(xiàng),右鍵單擊服務(wù)選擇啟動(dòng)。
  如果你正式?jīng)Q定使用狀態(tài)服務(wù)存儲(chǔ)Session前,別忘記修改服務(wù)為自啟動(dòng)(在操作系統(tǒng)重啟后服務(wù)能自己?jiǎn)?dòng))以免忘記啟動(dòng)服務(wù)而造成網(wǎng)站Session不能使用
  第2步,在system.web節(jié)點(diǎn)中加入:stateNetworkTimeout="20"> stateConnectionString表示狀態(tài)服務(wù)器的通信地址(IP:服務(wù)端口號(hào))。由于我們現(xiàn)在在本機(jī)進(jìn)行測(cè)試,這里設(shè)置成本機(jī)地址127.0.0.1。狀態(tài)服務(wù)默認(rèn)的監(jiān)聽(tīng)端口為42422。當(dāng)然,您也可以通過(guò)修改注冊(cè)表來(lái)修改狀態(tài)服務(wù)的端口號(hào)。
  (修改注冊(cè)表來(lái)修改狀態(tài)服務(wù)的端口號(hào)的方法:在運(yùn)行中輸入regedit啟動(dòng)注冊(cè)表編輯器—依次打開(kāi)HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesaspnet_stateParameters節(jié)點(diǎn),雙擊Port選項(xiàng)—選擇基數(shù)為十進(jìn)制,然后輸入一個(gè)端口號(hào)即可。)

  2.2 SqlServer
  在SQL Server中執(zhí)行一個(gè)叫做InstallSqlState.sql的腳本文件。這個(gè)腳本文件將在SQL Server中創(chuàng)建一個(gè)用來(lái)專門存儲(chǔ)Session信息的數(shù)據(jù)庫(kù),及一個(gè)維護(hù)Session信息數(shù)據(jù)庫(kù)的SQL Server代理作業(yè)。我們可以在以下路徑中找到那個(gè)文件:
[system drive]\winnt\Microsoft.NET\Framework\[version]\
然后打開(kāi)查詢分析器,連接到SQL Server服務(wù)器,打開(kāi)剛才的那個(gè)文件并且執(zhí)行。稍等片刻,數(shù)據(jù)庫(kù)及作業(yè)就建立好了。這時(shí),你可以打開(kāi)企業(yè)管理器,看到新增了一個(gè)叫ASPState的數(shù)據(jù)庫(kù)。
  修改mode的值改為SQLServer。注意,還要同時(shí)修改sqlConnectionString的值,格式為:sqlConnectionString="data source=localhost; Integrated Security=SSPI;"(這種是通過(guò)windows集成身份驗(yàn)證)

  3、Session的生命周期
  Session的生命周期其實(shí)在第一節(jié)已經(jīng)講過(guò)了,和不同的存儲(chǔ)過(guò)程有關(guān)。

  4、遍歷以及銷毀Session
  4.1遍歷:
復(fù)制代碼 代碼如下:

System.Collections.IEnumerator SessionEnum = Session.Keys.GetEnumerator();
while (SessionEnum.MoveNext())
{
Response.Write(Session[SessionEnum.Current.ToString()].ToString() + " ");
}

4.2 銷毀:Session.Abandon()。

相關(guān)文章

  • 比較經(jīng)典技術(shù)普及帖 以你剛才在淘寶上買了一件東西

    比較經(jīng)典技術(shù)普及帖 以你剛才在淘寶上買了一件東西

    你發(fā)現(xiàn)快要過(guò)年了,于是想給你的女朋友買一件毛衣,你打開(kāi)了taobao。這時(shí)你的瀏覽器首先查詢DNS服務(wù)器,將taobao轉(zhuǎn)換成ip地址
    2012-06-06
  • kettle在windows上安裝配置與實(shí)踐案例

    kettle在windows上安裝配置與實(shí)踐案例

    Kettle是一款開(kāi)源的ETL工具,純java編寫,可以在Window、Linux、Unix上運(yùn)行,綠色無(wú)需安裝,數(shù)據(jù)抽取高效穩(wěn)定,這篇文章主要介紹了kettle在windows上安裝配置與實(shí)踐案例,需要的朋友可以參考下
    2022-11-11
  • idea2023連接gitee遠(yuǎn)程倉(cāng)庫(kù)的實(shí)現(xiàn)方法

    idea2023連接gitee遠(yuǎn)程倉(cāng)庫(kù)的實(shí)現(xiàn)方法

    在我們平時(shí)做項(xiàng)目的過(guò)程中,經(jīng)常會(huì)遇到分工合作,一起完成一個(gè)項(xiàng)目,就會(huì)借助其它的一些項(xiàng)目管理工具,來(lái)幫助我們更方便的開(kāi)發(fā),本文主要介紹了idea2023連接gitee遠(yuǎn)程倉(cāng)庫(kù)的實(shí)現(xiàn)方法,感興趣的可以了解一下
    2024-01-01
  • 詳細(xì)解析Webpack是怎么運(yùn)行的

    詳細(xì)解析Webpack是怎么運(yùn)行的

    這篇文章主要介紹了Webpack是怎么運(yùn)行的,打包順序是怎樣的,非?;A(chǔ)且非常重要的知識(shí)點(diǎn)
    2020-02-02
  • Hadoop框架起步之圖解SSH、免密登錄原理和實(shí)現(xiàn)方法

    Hadoop框架起步之圖解SSH、免密登錄原理和實(shí)現(xiàn)方法

    這篇文章主要介紹了Hadoop框架起步之圖解SSH、免密登錄原理和實(shí)現(xiàn)方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-07-07
  • WebStorm 11.0.4安裝圖文教程

    WebStorm 11.0.4安裝圖文教程

    這篇文章主要為大家詳細(xì)介紹了WebStorm 11.0.4安裝圖文教程,文中安裝步驟介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-09-09
  • 初探 SOA

    初探 SOA

    SOA服務(wù)具有平臺(tái)獨(dú)立的自我描述XML文檔。Web服務(wù)描述語(yǔ)言(WSDL, Web Services Description Language)是用于描述服務(wù)的標(biāo)準(zhǔn)語(yǔ)言。
    2009-01-01
  • 關(guān)于GBK與UTF-8互轉(zhuǎn)亂碼問(wèn)題解讀

    關(guān)于GBK與UTF-8互轉(zhuǎn)亂碼問(wèn)題解讀

    GBK與UTF-8互轉(zhuǎn)亂碼問(wèn)題,是因?yàn)榫幋a和解碼方式不一致導(dǎo)致的,UTF-8編碼的字符在GBK中解碼可能會(huì)出現(xiàn)亂碼,而GBK編碼的字符在UTF-8中解碼則通??梢赃€原,ISO-8859-1編碼是單字節(jié)編碼,可以保證亂碼字符串的還原
    2025-02-02
  • 基于 Dubbo Admin 動(dòng)態(tài)調(diào)整服務(wù)超時(shí)時(shí)間的操作步驟

    基于 Dubbo Admin 動(dòng)態(tài)調(diào)整服務(wù)超時(shí)時(shí)間的操作步驟

    Dubbo提供動(dòng)態(tài)調(diào)整超時(shí)時(shí)間的服務(wù)治理能力,可以在無(wú)需重啟應(yīng)用的情況下,動(dòng)態(tài)調(diào)整服務(wù)超時(shí)時(shí)間,這篇文章主要介紹了基于 Dubbo Admin 動(dòng)態(tài)調(diào)整服務(wù)超時(shí)時(shí)間,需要的朋友可以參考下
    2022-12-12
  • Git基礎(chǔ)之git與SVN版本控制優(yōu)缺點(diǎn)區(qū)別分析

    Git基礎(chǔ)之git與SVN版本控制優(yōu)缺點(diǎn)區(qū)別分析

    這篇文章主要為大家介紹了Git基礎(chǔ)之git與SVN優(yōu)缺點(diǎn)及區(qū)別分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-04-04

最新評(píng)論

平阴县| 沈丘县| 荔波县| 四会市| 晋城| 青冈县| 大荔县| 呼伦贝尔市| 杂多县| 元江| 广汉市| 兰考县| 板桥市| 浦北县| 桐柏县| 阿克苏市| 梅河口市| 浮梁县| 建瓯市| 吴旗县| 台安县| 新建县| 沈丘县| 蒲江县| 威远县| 乃东县| 南部县| 江津市| 黄石市| 舒兰市| 和田县| 新田县| 仁化县| 商河县| 九江市| 鄂温| 衡阳县| 临海市| 邯郸市| 齐齐哈尔市| 资兴市|