明輝手游網(wǎng)中心:是一個免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺!

asp+中的session 的使用與原理() 不需要cookie也可以使用session

[摘要]/*豆腐制作 都是精品http://www.asp888.net 豆腐技術(shù)站如轉(zhuǎn)載 請保留版權(quán)信息*/session 的 管理,我們傳統(tǒng)的asp 程序其實是一種 dead 的session 聯(lián)結(jié),系...
/*
豆腐制作 都是精品
http://www.asp888.net 豆腐技術(shù)站
如轉(zhuǎn)載 請保留版權(quán)信息
*/
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)境中,Session 被完全的重新進(jìn)行了定義,由于豆腐現(xiàn)在的ASp.Net 的環(huán)境是PDC 版本的,
所以,沒有對Beta1 版本進(jìn)行Demo,我在這里如果涉及到 Beta1 的內(nèi)容,都是僅僅是材料上介紹的,沒有經(jīng)過
豆腐的測試

其實,對于一些不愿意深究的同志們,豆腐 說:其實 asp.net 的使用方法和asp 的使用方法完全相同,甚至
更為簡單,因為 根據(jù)豆腐 的觀察,我們根本不用繼續(xù) 去考慮 客戶端 的 cookie 選項 的狀態(tài),因為
不管客戶端的設(shè)置如何,session都可以順利的傳遞

下面我們就對 asp.net 的 session 機(jī)制進(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 的機(jī)制,將Session 的數(shù)據(jù)保存在這一臺服務(wù)器上,
如果inproc 和 usesqlserver 同時為 false ,則采取一種 out process 的機(jī)制,將session 存儲在 一臺 專門用來
保存session 的服務(wù)器上,這樣就可以解決當(dāng)訪問 一個站點的 不同主機(jī)的時候,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 以后,再次運(yùn)行這個程序,我們發(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)于 sql server 的這個部分 我就 無能為力了,都怪 豆腐 沒有挺 開心 的話,安裝了個 PDC 的版本,現(xiàn)在想起來 后悔呀:(

通過這些的學(xué)習(xí),我們是否對asp.net 的session 機(jī)制有了進(jìn)一步的了解了呢?


作者:豆腐(原創(chuàng))