ASP.NET Session對(duì)象保持會(huì)話使用說明
在ASP.NET的程序中要使用Session對(duì)象時(shí),必須確保頁面的@page指令中EnableSessionState屬性是True或者Readonly,并且在web.config文件中正確的設(shè)置了SessionState屬性。
ASP.NET中Session的狀態(tài)保持是由web.config文件中的<system.web>標(biāo)記下的<sessionstate>標(biāo)記的mode屬性來決定的。該屬性有四種可能的值:Off、Inproc、StateServer和SQlServer.
設(shè)為Off會(huì)禁用Session.
Inproc是缺省的設(shè)置,這種模式和以前的ASP的會(huì)話狀態(tài)的方法是類似的,會(huì)話的狀態(tài)會(huì)被保存在ASP.NET進(jìn)程中,它的優(yōu)點(diǎn)是顯而易見的:性能。進(jìn)程內(nèi)的數(shù)據(jù)訪問自然會(huì)比夸進(jìn)程的訪問快。然而,這種方法Session的狀態(tài)依賴于ASP.NET進(jìn)程,當(dāng)IIS進(jìn)程崩潰或者正常重起啟時(shí),保存在進(jìn)程中的狀態(tài)將丟失。
為了克服Inproc模式的缺點(diǎn),ASP.NET提供了兩種進(jìn)程外保持會(huì)話狀態(tài)的方法。
ASP.NET首先提供了提供了一個(gè)Windows服務(wù):ASPState,這個(gè)服務(wù)啟動(dòng)后,ASP.NET應(yīng)用程序可以將mode屬性設(shè)置為“SateServer”,來使用這個(gè)Windows服務(wù)提供的狀態(tài)管理方法。
除了在web.config文件中設(shè)置mode屬性為StateServer外,還必須設(shè)置運(yùn)行StateServer服務(wù)器的IP地址和端口號(hào).如果在IIS所在的機(jī)器運(yùn)行StateServer則IP地址就是127.0.0.1,端口號(hào)通常是42424.配置如下:
mode=”StateServer”
stateConnectionString="tcpip=127.0.0.1:42424"
使用這種模式,會(huì)話狀態(tài)的存儲(chǔ)將不依賴IIS進(jìn)程的失敗或者重啟,會(huì)話的狀態(tài)將存儲(chǔ)在StateServer進(jìn)程的內(nèi)存空間中。
另一種會(huì)話狀態(tài)模式是SQLServer模式。這種模式是將會(huì)話的狀態(tài)保存在SQLServer數(shù)據(jù)庫中的。使用這種模式前,必須至少有一臺(tái)SQLServer服務(wù)器,并在服務(wù)器中建立需要的表和存儲(chǔ)過程。.NETSDK提供了兩個(gè)腳本來簡(jiǎn)化這個(gè)工作:InstallSqlState.sql和UnInstallSqlState.sql。這兩國文件存放在下面路徑中:
<%SYSTEMDRIVER%>\Winnt\Microsoft.NET\Framework\<%version%>\
要配置SQLServer服務(wù)器,可以在命令行中運(yùn)行SQLServer提供的命令行工具osql.exe
osql-s[servername]-u[user]-p[password]<InstallSqlState.sql
例如:
osql-s(local)-uas-p“”-iInstallSqlState.sql
做好必要的數(shù)據(jù)庫準(zhǔn)備工作后,將web.config文件中的sessionstate元素的mode屬性改為”sqlserver”,并指定SQL連接字符串。具體如下:
mode="SQLServer"
sqlConnectionString="datasource=127.0.0.1;userid=sa;password=;Trusted_Connection=yes"
使用SQLServer模式處了可以使Session的狀態(tài)不依賴于IIS服務(wù)器之外,還可以利用SQLServer的集群,使?fàn)顟B(tài)存儲(chǔ)不依賴于單個(gè)的SQLServer,這樣就可以為應(yīng)用程序提供極大的可靠性。
總結(jié):seesion通過兩種方式保持會(huì)話,cookie/存儲(chǔ)到數(shù)據(jù)中去
相關(guān)文章
ASP.NET Core中如何使用表達(dá)式樹創(chuàng)建URL詳解
這篇文章主要給大家介紹了關(guān)于ASP.NET Core中如何使用表達(dá)式樹創(chuàng)建URL的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-10-10Asp.Net二級(jí)域名共享Forms身份驗(yàn)證、下載站/圖片站的授權(quán)訪問控制
我們平時(shí)一般在做圖片或者文件下載權(quán)限控制的時(shí)候基本都是控制到下載頁面的,當(dāng)你的下載地址暴露后,瀏覽者就直接可以通過文件地址進(jìn)行下載了,這時(shí)候也就出現(xiàn)了我們常說的盜鏈2012-02-02ASP.NET(VB)寫的后臺(tái)發(fā)送短信實(shí)現(xiàn)代碼
使用vb寫的后臺(tái)發(fā)送短信代碼,很實(shí)用的一項(xiàng)功能,感興趣的朋友可以了解下,或許對(duì)你學(xué)習(xí)asp.net vb有所幫助2013-02-02在應(yīng)用程序級(jí)別之外使用注冊(cè)為allowDefinition=''MachineToApplication''的節(jié)是錯(cuò)誤的
在應(yīng)用程序級(jí)別之外使用注冊(cè)為 allowDefinition='MachineToApplication' 的節(jié)是錯(cuò)誤的2009-03-03Repeater綁定dictionary數(shù)據(jù)源代碼及報(bào)錯(cuò)解決
為大家講解下Repeater綁定dictionary數(shù)據(jù)源以及報(bào)錯(cuò)處理的方法,感興趣的朋友可以參考下哈,希望對(duì)你有所幫助2013-04-04asp.net core多文件分塊同時(shí)上傳組件使用詳解
這篇文章主要為大家介紹了一個(gè)可多個(gè)文件同時(shí)上傳、斷點(diǎn)續(xù)傳,并實(shí)時(shí)反饋上傳進(jìn)度的 Asp.Net core 組件,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-12-12ASP.NET在上傳文件時(shí)對(duì)文件類型的高級(jí)判斷的代碼
在上傳文件過程中,可以通過修改擴(kuò)展名來逃過文件類型的判斷并實(shí)現(xiàn)上傳,就需要可以驗(yàn)證究竟是什么文件。下面的代碼大家可以測(cè)試下。2009-12-12根據(jù)Eval()函數(shù)綁定的值,來顯示GridView中的控件的方法
根據(jù)Eval()函數(shù)綁定的值,來顯示GridView中的控件的方法,需要的朋友可以參考一下2013-03-03