這篇文章主要介紹“ASP.NET Session 狀態(tài)的存儲方法”,在日常操作中,相信很多人在ASP.NET Session 狀態(tài)的存儲方法問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”ASP.NET Session 狀態(tài)的存儲方法”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
創(chuàng)新互聯(lián)主要從事成都網(wǎng)站建設、做網(wǎng)站、網(wǎng)頁設計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務。立足成都服務河池,十載網(wǎng)站建設經(jīng)驗,價格優(yōu)惠、服務專業(yè),歡迎來電咨詢建站服務:18980820575
asp.net中客戶端Session狀態(tài)的存儲
在我們上面的ASP.NET Session模型簡介中,大家可以發(fā)現(xiàn)Session狀態(tài)應該存儲在兩個地方,分別是客戶端和 其中,http://localhost/MyTestApplication/(ulqsek45heu3ic2a5zgdl245)/default.aspx中黑體標出的就是客戶端的Session ID。注意,這段信息是由IIS自動加上的,不會影響以前正常的連接。 asp.net中服務器端Session狀態(tài)的存儲 準備工作 為了您能更好的體驗到實驗現(xiàn)象,您可以建立一個叫做SessionState.aspx的頁面,然后把以下這些代碼添加到< body>< /body>中。 這個SessionState.aspx的頁面可以用來測試在當前的服務器上是否丟失了Session信息。 將服務器Session信息存儲在進程中 讓我們來回到Web.config文件的剛才那段段落中: 當mode的值是InProc時,說明服務器正在使用這種模式。 這種方式和以前ASP中的模式一樣,就是服務器將Session信息存儲在IIS進程中。當IIS關閉、重起后,這些信息都會丟失。但是這種模式也有自己***好處,就是性能***。應為所有的Session信息都存儲在了IIS的進程中,所以IIS能夠很快的訪問到這些信息,這種模式的性能比進程外存儲Session信息或是在SQL Server中存儲Session信息都要快上很多。這種模式也是asp.net的默認方式。 好了,現(xiàn)在讓我們做個試驗。打開剛才的SessionState.aspx頁面,隨便輸入一些字符,使其存儲在Session中。然后,讓我們讓IIS重起。注意,并不是使當前的站點停止再開始,而是在IIS中本機的機器名的節(jié)點上點擊鼠標右鍵,選擇重新啟動IIS。(想當初使用NT4時,重新啟動IIS必須要重新啟動計算機才行,微軟真是@#$%^&)返回到SessionState.aspx頁面中,檢查剛才的Session信息,發(fā)現(xiàn)信息已經(jīng)丟失了。 將服務器Session信息存儲在進程外 首先,讓我們來打開管理工具->服務,找到名為:asp.net State Service的服務,啟動它。實際上,這個服務就是啟動一個要保存Session信息的進程。啟動這個服務后,你可以從Windows任務管理器->進程中看到一個名為aspnet_state.exe的進程,這個就是我們保存Session信息的進程。 然后,回到Web.config文件中上述的段落中,將mode的值改為StateServer。保存文件后的重新打開一個IE,打開SessionState.aspx頁面,保存一些信息到Session中。這時,讓我們重起IIS,再回到SessionState.aspx頁面中查看剛才的Session信息,發(fā)現(xiàn)沒有丟失。 實際上,這種將ASP.NET Session信息存儲在進程外的方式不光指可以將信息存儲在本機的進程外,還可以將Session信息存儲在其他的服務器的進程中。這時,不光需要將mode的值改為StateServer,還需要在stateConnectionString中配置相應的參數(shù)。例如你的計算你是192.168.0.1,你想把Session存儲在IP為192.168.0.2的計算機的進程中,就需要設置成這樣:stateConnectionString="tcpip=192.168.0.2:42424"。當然,不要忘記在192.168.0.2的計算機中裝上.NET Framework,并且啟動asp.net State Services服務。 將服務器Session信息存儲在SQL Server中 首先,還是讓我們來做一些準備工作。啟動SQL Server和SQL Server代理服務。在SQL Server中執(zhí)行一個叫做InstallSqlState.sql的腳本文件。這個腳本文件將在SQL Server中創(chuàng)建一個用來專門存儲Session信息的數(shù)據(jù)庫,及一個維護Session信息數(shù)據(jù)庫的SQL Server代理作業(yè)。我們可以在以下路徑中找到那個文件: [system drive]\winnt\Microsoft.NET\Framework\[version]\ 然后打開查詢分析器,連接到SQL Server服務器,打開剛才的那個文件并且執(zhí)行。稍等片刻,數(shù)據(jù)庫及作業(yè)就建立好了。這時,你可以打開企業(yè)管理器,看到新增了一個叫ASPState的數(shù)據(jù)庫。但是這個數(shù)據(jù)庫中只是些存儲過程,沒有用戶表。實際上Session信息是存儲在了tempdb數(shù)據(jù)庫的ASPStateTempSessions表中的,另外一個ASPStateTempApplications表存儲了ASP中Application對象信息。這兩個表也是剛才的那個腳本建立的。另外查看管理->SQL Server代理->作業(yè),發(fā)現(xiàn)也多了一個叫做ASPState_Job_DeleteExpiredSessions的作業(yè),這個作業(yè)實際上就是每分鐘去ASPStateTempSessions表中刪除過期的Session信息的。 接著,我們返回到Web.config文件,修改mode的值改為SQLServer。注意,還要同時修改sqlConnectionString的值,格式為: 其中data source是指SQL Server服務器的IP地址,如果SQL Server與IIS是一臺機子,寫127.0.0.1就行了。Integrated Security=SSPI的意思是使用Windows集成身份驗證,這樣,訪問數(shù)據(jù)庫將以asp.net的身份進行,通過如此配置,能夠獲得比使用userid=sa;password=口令的SQL Server驗證方式更好的安全性。當然,如果SQL Server運行于另一臺計算機上,你可能會需要通過Active Directory域的方式來維護兩邊驗證的一致性。 同樣,讓我們做個試驗。向SessionState.aspx中添加Session信息,這時發(fā)現(xiàn)Session信息已經(jīng)存在SQL Server中了,即使你重起計算機,剛才的Session信息也不會丟失?,F(xiàn)在,你已經(jīng)完全看見了Session信息到底是什么樣子的了,而且又是存儲在SQL Server中的,能干什么就看你的發(fā)揮了。 到此,關于“ASP.NET Session 狀態(tài)的存儲方法”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續(xù)學習更多相關知識,請繼續(xù)關注創(chuàng)新互聯(lián)網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>
< scriptrunat="server"> Sub Session_Add(sender As Object, e As EventArgs) Session("MySession") = text1.Value span1.InnerHtml = "Session data updated! < P>Your session contains: < font color=red>" & \ Session("MySession").ToString() & "< /font>" End Sub Sub CheckSession(sender As Object, eAs EventArgs) If (Session("MySession")Is Nothing) Then span1.InnerHtml = "NOTHING, SESSION DATA LOST!" Else span1.InnerHtml = "Your session contains: < font color=red>" & \ Session("MySession").ToString() & "< /font>" End If End Sub < /script> < formrunat="server"id="Form2"> < inputid="text1"type="text"runat="server"name="text1"> < inputtype="submit"runat="server"OnServerClick="Session_Add" value="Add to Session State" id="Submit1"name="Submit1"> < inputtype="submit"runat="server"OnServerClick="CheckSession" value="View Session State" id="Submit2"name="Submit2"> < /form> < hrsize="1"> < fontsize="6">< spanid="span1"runat="server" />< /font>
< sessionState mode="InProc" stateConnectionString="tcpip=127.0.0.1:42424" sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes" cookieless="false" timeout="20" />
sqlConnectionString="data source=localhost; Integrated Security=SSPI;"
本文題目:ASP.NETSession狀態(tài)的存儲方法
網(wǎng)頁路徑:http://weahome.cn/article/jeipij.html