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

session的存儲方式和配置方法介紹

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

  session其實分為客戶端Session和服務器端Session。

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

  其實客戶端Session默認是以cookie的形式來存儲的,所以當用戶禁用了cookie的話,服務器端就得不到SessionID。這時我們可以使用url的方式來存儲客戶端Session。也就是將SessionID直接寫在了url中,當然這種方法不常用。

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

  1.1保存在IIS進程中:

  保存在IIS進程中是指把Session數據保存在IIS的運行的進程中,也就是inetinfo.exe這個進程中,這也是默認的Session的存方式,也是最常用的。

  這種方式的優(yōu)點是簡單,性能最高。但是當重啟IIS服務器時Session丟失。

  1.2.保存在StateServer上

  這種存儲模式是指將Session數據存儲在一個稱為Asp.Net狀態(tài)服務進程中,該進程獨立于Asp.Net輔助進程或IIS應用程序池的單獨進程,使用此模式可以確保在重新啟動Web應用程序時保留會話狀態(tài),并使會話狀態(tài)可以用于網絡中的多個Web服務器。

  1.3.保存在SQL Server數據庫中

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

  這種方式在服務器掛掉重啟后都還在,因為他存儲在內存和磁盤中。

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

InProc

StateServer

SQLServer

存儲物理位置

IIS進程(內存)

Windows服務進程(內存)

SQLServer數據庫(磁盤)

存儲類型限制

無限制

可以序列化的類型

可以序列化的類型

存儲大小限制

無限制

使用范圍

當前請求上下文,對于每個用戶獨立

生命周期

第一次訪問網站的時候創(chuàng)建Session超時后銷毀

優(yōu)點

性能比較高

Session不依賴Web服務器,不容易丟失

缺點

容易丟失

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

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

使用原則

不要存放大量數據

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

<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 設置將Session信息存儲到哪里:
    — Off 設置為不使用Session功能;
    — InProc 設置為將Session存儲在進程內,就是ASP中的存儲方式,這是默認值;
    — StateServer 設置為將Session存儲在獨立的狀態(tài)服務中;
    — SQLServer 設置將Session存儲在SQL Server中。
  
  cookieless 設置客戶端的Session信息存儲到哪里:
    — ture 使用Cookieless模式;這時客戶端的Session信息就不再使用Cookie存儲了,而是將其通過URL存儲。比如網址為http://localhost/MyTestApplication/(ulqsek45heu3ic2a5zgdl245)/default.aspx
    — false 使用Cookie模式,這是默認值。

  timeout 設置經過多少分鐘后服務器自動放棄Session信息。默認為20分鐘。

  stateConnectionString 設置將Session信息存儲在狀態(tài)服務中時使用的服務器名稱和端口號,例如:"tcpip=127.0.0.1:42424”。當mode的值是StateServer是,這個屬性是必需的。(42424是默認端口)。

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

  stateNetworkTimeout 設置當使用StateServer模式存儲Session狀態(tài)時,經過多少秒空閑后,斷開Web服務器與存儲狀態(tài)信息的服務器的TCP/IP連接的。默認值是10秒鐘。


  下面來說下用StateServer和SqlServer來存儲Session的方法

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

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

  3、Session的生命周期
  Session的生命周期其實在第一節(jié)已經講過了,和不同的存儲過程有關。

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

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

4.2 銷毀:Session.Abandon()。
您可能感興趣的文章:

相關文章

  • 比較經典技術普及帖 以你剛才在淘寶上買了一件東西

    比較經典技術普及帖 以你剛才在淘寶上買了一件東西

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

    kettle在windows上安裝配置與實踐案例

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

    idea2023連接gitee遠程倉庫的實現方法

    在我們平時做項目的過程中,經常會遇到分工合作,一起完成一個項目,就會借助其它的一些項目管理工具,來幫助我們更方便的開發(fā),本文主要介紹了idea2023連接gitee遠程倉庫的實現方法,感興趣的可以了解一下
    2024-01-01
  • 詳細解析Webpack是怎么運行的

    詳細解析Webpack是怎么運行的

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

    Hadoop框架起步之圖解SSH、免密登錄原理和實現方法

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

    WebStorm 11.0.4安裝圖文教程

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

    初探 SOA

    SOA服務具有平臺獨立的自我描述XML文檔。Web服務描述語言(WSDL, Web Services Description Language)是用于描述服務的標準語言。
    2009-01-01
  • 關于GBK與UTF-8互轉亂碼問題解讀

    關于GBK與UTF-8互轉亂碼問題解讀

    GBK與UTF-8互轉亂碼問題,是因為編碼和解碼方式不一致導致的,UTF-8編碼的字符在GBK中解碼可能會出現亂碼,而GBK編碼的字符在UTF-8中解碼則通常可以還原,ISO-8859-1編碼是單字節(jié)編碼,可以保證亂碼字符串的還原
    2025-02-02
  • 基于 Dubbo Admin 動態(tài)調整服務超時時間的操作步驟

    基于 Dubbo Admin 動態(tài)調整服務超時時間的操作步驟

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

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

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

最新評論

德阳市| 华宁县| 新密市| 荔波县| 余庆县| 汝州市| 双桥区| 宜丰县| 墨江| 乌兰县| 常德市| 肃宁县| 冕宁县| 长春市| 高安市| 东乌珠穆沁旗| 邓州市| 新和县| 东方市| 蒙自县| 德庆县| 沙河市| 乌拉特后旗| 台东市| 剑阁县| 城固县| 沿河| 商南县| 叙永县| 公主岭市| 叙永县| 朔州市| 绥芬河市| 潮州市| 上饶县| 渭南市| 湄潭县| 玉田县| 突泉县| 开远市| 寻甸|