asp+中的session 的使用與原理() 不需要cookie也可以使用session
發(fā)表時間:2023-08-08 來源:明輝站整理相關軟件相關文章人氣:
[摘要]/*豆腐制作 都是精品http://www.asp888.net 豆腐技術站如轉載 請保留版權信息*/session 的 管理,我們傳統(tǒng)的asp 程序其實是一種 dead 的session 聯(lián)結,系...
/*
豆腐制作 都是精品
http://www.asp888.net 豆腐技術站
如轉載 請保留版權信息
*/
session 的 管理,我們傳統(tǒng)的asp 程序其實是一種 dead 的session 聯(lián)結,系統(tǒng)其實在我們的客戶端書
寫了一個Cookie,當我們把我們?yōu)g覽器的 安全設置中的 Cookie 設置成 Prompt 的時候,當我們訪問一個
有Session 的頁面的時候,就會出現一個是否允許Cookie 的提示,當設置成為 不允許 Cookie 的時候,我們
的Session 總是不能成功.例如:
<%
Session("username")="豆腐"
Session("URL")="http://www.asp888.net"
%>
在ASp.Net 的環(huán)境中,Session 被完全的重新進行了定義,由于豆腐現在的ASp.Net 的環(huán)境是PDC 版本的,
所以,沒有對Beta1 版本進行Demo,我在這里如果涉及到 Beta1 的內容,都是僅僅是材料上介紹的,沒有經過
豆腐的測試
其實,對于一些不愿意深究的同志們,豆腐 說:其實 asp.net 的使用方法和asp 的使用方法完全相同,甚至
更為簡單,因為 根據豆腐 的觀察,我們根本不用繼續(xù) 去考慮 客戶端 的 cookie 選項 的狀態(tài),因為
不管客戶端的設置如何,session都可以順利的傳遞
下面我們就對 asp.net 的 session 機制進行一些簡單的深入了解,限于技術,我有的問題也不是很清楚,
所以歡迎大家一同來探討 這個 文章
在PDC 版本中,我們打開 %systemroot%\complus\(version)\config.web 文件,我們找到 sessionstate
可以看到以前的內容:
<sessionstate
inproc="true"
usesqlserver="false"
cookieless="false"
timeout="20"
server="localhost"
port="42424"
/>
當 inproc 為True 的時候,asp.net 將采取一種稱為 in-process 的機制,將Session 的數據保存在這一臺服務器上,
如果inproc 和 usesqlserver 同時為 false ,則采取一種 out process 的機制,將session 存儲在 一臺 專門用來
保存session 的服務器上,這樣就可以解決當訪問 一個站點的 不同主機的時候,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">
-->
關于 config.web 文件的session 部分我們就先說到這里,下面我們來看看 cookieless 的問題:
這個Cookieless 不是我們平常理解的是否在 客戶端 保存Cookie 根據豆腐的觀察,ASP.net 的session
是不會在 瀏覽器客戶端生成任何的cookie的
我們首先把 cookieless 設置成為 false 的時候,我們來看看這個程序
<%@ Page Language="VB" %>
<%Session("name")="豆腐"%>
<%=Session("name")%>
程序執(zhí)行結束后,我們沒有從瀏覽器得到任何的 提示,雖然我們也使用到了Session
當我們 把 cookieless 設置成為 true 以后,再次運行這個程序,我們發(fā)現 程序仍然是
正確的執(zhí)行,但是瀏覽器的地址欄發(fā)生了一些變化,我們以前是
http://host/testsession.aspx 現在變成了 http://host/(包含有很多字符串的內容)/testsession.aspx
豆腐估計這是 因為 這個session 甚至在 服務器上也沒有 生成Cookie 的原因,只好用 (包含有很多字符串的內容)的
內容來保存Session的內容了
當我們將 inproc 和 usesqlserver 都設置成為 false 表示我們將使用 out process 這個時候,我們就要指定
server 的name 這個server 就是同意保存 session 的 服務器,我們需要在這個 服務器上 將asp state 的服務啟動
當我們需要使用 sql server 的時候,我們必須填寫 sql server 的連接字符串,這樣 session 就會被保存到
sql server 的一個database ,當然這個database 是要生成的,,不過在 PDC 版本中,我沒有找到這個database 的安裝文件
所以,關于 sql server 的這個部分 我就 無能為力了,都怪 豆腐 沒有挺 開心 的話,安裝了個 PDC 的版本,現在想起來 后悔呀:(
通過這些的學習,我們是否對asp.net 的session 機制有了進一步的了解了呢?
作者:豆腐(原創(chuàng))