您好,登錄后才能下訂單哦!
ASP.NET中Session如何使用,針對這個問題,這篇文章詳細(xì)介紹了相對應(yīng)的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
Session 的管理,我們傳統(tǒng)的asp 程序其實是一種 dead 的Session 聯(lián)結(jié),系統(tǒng)其實在我們的客戶端書寫了一個Cookie,當(dāng)我們把我們?yōu)g覽器的 安全設(shè)置中的 Cookie 設(shè)置成 Prompt 的時候,當(dāng)我們訪問一個有Session 的頁面的時候,就會出現(xiàn)一個是否允許Cookie 的提示,當(dāng)設(shè)置成為 不允許 Cookie 的時候,我們的Session 總是不能成功.例如:
﹤% Session("username")="豆腐" Session("URL")="http://www.asp888.net" %﹥
在ASP.NET 的環(huán)境中,ASP.NET Session使用的情況是被完全的重新進(jìn)行了定義,由于豆腐現(xiàn)在的ASP.NET 的環(huán)境是PDC 版本的,所以,沒有對Beta1 版本進(jìn)行Demo,我在這里如果涉及到 Beta1 的內(nèi)容,都是僅僅是材料上介紹的,沒有經(jīng)過豆腐的測試
其實,對于一些不愿意深究的同志們,豆腐 說:其實 ASP.NET Session使用方法和ASP Session使用的使用方法完全相同,甚至更為簡單,因為 根據(jù)豆腐 的觀察,我們根本不用繼續(xù) 去考慮 客戶端 的cookie 選項 的狀態(tài),因為不管客戶端的設(shè)置如何,Session都可以順利的傳遞
下面我們就對ASP.NET Session使用機制進(jìn)行一些簡單的深入了解,限于技術(shù),我有的問題也不是很清楚,所以歡迎大家一同來探討 這個 文章
在PDC 版本中,我們打開 %systemroot%\complus\(version)\config.web 文件,我們找到 Sessionstate可以看到以前的內(nèi)容:
﹤Sessionstate inproc="true" usesqlserver="false" cookieless="false" timeout="20" server="localhost" port="42424" /﹥
當(dāng) inproc 為True 的時候,ASP.NET 將采取一種稱為 in-process 的機制,將Session 的數(shù)據(jù)保存在這一臺服務(wù)器上,如果inproc 和usesqlserver 同時為 false ,則采取一種 out process 的機制,將Session 存儲在 一臺 專門用來保存Session 的服務(wù)器上,這樣就可以解決當(dāng)訪問 一個站點的 不同主機的時候,Session 的共享,這個以前在ASP中絕對是不可能的.在 Beta1 的版本上 config.web 改變了很多,我們簡單的看一下:
﹤!-- Sessionstate attributes: mode = "inproc" | "sqlserver" | "stateserver" cookieless = "true" | "false" timeout = ﹤Session timeout in minutes, a whole number greater than 0﹥ sqlconnectionstring = ﹤acceptable values for SQLConnection.ConnectionString, only used when mode="sqlserver"﹥ server = ﹤server name, only used when mode="stateserver"﹥ port = ﹤port number, only used when mode="stateserver"﹥ --﹥
關(guān)于 config.web 文件的Session 部分我們就先說到這里,下面我們來看看 cookieless 的問題:
這個Cookieless 不是我們平常理解的是否在 客戶端 保存Cookie 根據(jù)豆腐的觀察,ASP.NET的Session
是不會在 瀏覽器客戶端生成任何的cookie的
我們首先把 cookieless 設(shè)置成為 false 的時候,我們來看看這個程序
﹤%@ Page Language="VB" %﹥ ﹤%Session("name")="豆腐"%﹥ ﹤%=Session("name")%﹥
程序執(zhí)行結(jié)束后,我們沒有從瀏覽器得到任何的 提示,雖然我們也使用到了Session當(dāng)我們 把 cookieless 設(shè)置成為 true 以后,再次運行這個程序,我們發(fā)現(xiàn) 程序仍然是正確的執(zhí)行,但是瀏覽器的地址欄發(fā)生了一些變化,我們以前是
http://host/testSession.aspx 現(xiàn)在變成了 http://host/(包含有很多字符串的內(nèi)容)/testSession.aspx豆腐估計這是 因為 這個Session 甚至在 服務(wù)器上也沒有 生成Cookie 的原因,只好用 (包含有很多字符串的內(nèi)容)的內(nèi)容來保存Session的內(nèi)容了
當(dāng)我們將inproc 和 usesqlserver 都設(shè)置成為 false 表示我們將使用 out process 這個時候,我們就要指定server 的name 這個server 就是同意保存 Session 的 服務(wù)器,我們需要在這個服務(wù)器上將asp state 的服務(wù)啟動
當(dāng)我們需要使用 sql server 的時候,我們必須填寫 sql server的連接字符串,這樣 Session 就會被保存到sql server 的一個database ,當(dāng)然這個database 是要生成的,,不過在PDC版本中,我沒有找到這個database 的安裝文件。
關(guān)于ASP.NET中Session如何使用問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注億速云行業(yè)資訊頻道了解更多相關(guān)知識。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。