亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > .NET > 正文

詳解ASP.NET中Session的用法

2024-07-10 13:30:29
字體:
來源:轉載
供稿:網友
我們可以使用 Session 對象存儲特定的用戶會話所需的信息,這篇文章就為大家詳細介紹了ASP.NET中Session的用法,感興趣的小伙伴們可以參考一下
 

      當用戶在應用程序的頁之間跳轉時,存儲在 Session 對象中的變量不會清除,而用戶在應用程序中訪問頁面時,這些變量始終存在。當用戶請求來自應用程序的 Web 頁時,如果該用戶還沒有會話,則 Web 服務器將自動創建一個 Session 對象。當會話過期或被放棄后,服務器將終止該會話。

       通過向客戶程序發送唯一的 Cookie 可以管理服務器上的 Session 對象。當用戶第一次請求 ASP 應用程序中的某個頁面時,ASP 要檢查 HTTP 頭信息,查看是否有在報文中有名為 ASPSESSIONID 的 Cookie 發送過來,如果有,則服務器會啟動新的會話,并為該會話生成一個全局唯一的值,在把這個值作為新 ASPSESSIONID Cookie 的值發送給客戶端,正是使用這種 Cookie,可以訪問存儲在服務器上的屬于客戶程序的信息。Session 對象最常見的作用就是存儲用戶的首選項。例如,如果用戶指明不喜歡查看圖形,就可以將該信息存儲在 Session 對象中。另外其還經常被用在鑒別客戶身份的程序中。要注意的是,會話狀態僅在支持 cookie 的瀏覽器中保留,如果客戶關閉了 Cookie 選項,Session 也就不能發揮作用了。 

(一)Session的基本屬性:

一、屬性

1、SessionID

       SessionID 屬性返回用戶的會話標識。在創建會話時,服務器會為每一個會話生成一個單獨的標識。會話標識以長整形數據類型返回。在很多情況下 SessionID 可以用于 WEB 頁面注冊統計。

2、TimeOut

       Timeout 屬性以分鐘為單位為該應用程序的 Session 對象指定超時時限。如果用戶在該超時時限之內不刷新或請求網頁,則該會話將終止。

二、方法

       Session 對象僅有一個方法,就是 Abandon,Abandon 方法刪除所有存儲在 Session 對象中的對象并釋放這些對象的源。如果您未明確地調用 Abandon 方法,一旦會話超時,服務器將刪除這些對象。當服務器處理完當前頁時,下面示例將釋放會話狀態。 

< % Session.Abandon %>

三、事件

Session 對象有兩個事件可用于在 Session 對象啟動和釋放是運行過程。

1、Session_OnStart 事件在服務器創建新會話時發生。服務器在執行請求的頁之前先處理該腳本。Session_OnStart 事件是設置會話期變量的最佳時機,因為在訪問任何頁之前都會先設置它們。

       盡管在 Session_OnStart 事件包含 Redirect 或 End 方法調用的情況下 Session 對象仍會保持,然而服務器將停止處理 Global.asa 文件并觸發 Session_OnStart 事件的文件中的腳本。

       為了確保用戶在打開某個特定的 Web 頁時始終啟動一個會話,就可以在 Session_OnStart 事件中調用 Redirect 方法。當用戶進入應用程序時,服務器將為用戶創建一個會話并處理 Session_OnStart 事件腳本。您可以將腳本包含在該事件中以便檢查用戶打開的頁是不是啟動頁,如果不是,就指示用戶調用 Response.Redirect 方法啟動網頁。程序如下 :

< SCRIPT RUNAT=Server Language=VBScript>Sub Session_OnStartstartPage = "/MyApp/StartHere.asp"currentPage = Request.ServerVariables("SCRIPT_NAME")if strcomp(currentPage,startPage,1) thenResponse.Redirect(startPage)end ifEnd Sub< /SCRIPT>

       上述程序只能在支持 cookie 的瀏覽器中運行。因為不支持 cookie 的瀏覽器不能返回 SessionID cookie,所以,每當用戶請求 Web 頁時,服務器都會創建一個新會話。這樣,對于每個請求服務器都將處理 Session_OnStart 腳本并將用戶重定向到啟動頁中。 

2、Session_OnEnd 事件在會話被放棄或超時發生。

       關于使用 Session 對象需要注意的事項 Application 對象相近,請參照前文。

       會話可以通過以下三種方式啟動 :

1)、一個新用戶請求訪問一個 URL,該 URL 標識了某個應用程序中的 .asp 文件,并且該應用程序的 Global.asa 文件包含 Session_OnStart 過程。

2)、用戶在 Session 對象中存儲了一個值。

3)、用戶請求了一個應用程序的 .asp 文件,并且該應用程序的Global.asa 文件使用 < OBJECT> 標簽創建帶有會話作用域的對象的實例。

       如果用戶在指定時間內沒有請求或刷新應用程序中的任何頁,會話將自動結束。這段時間的默認值是 20 分鐘??梢酝ㄟ^在 Internet 服務管理器中設置“應用程序選項”屬性頁中的“會話超時”屬性改變應用程序的默認超時限制設置。應依據您的 Web 應用程序的要求和服務器的內存空間來設置此值。例如,如果您希望瀏覽您的 Web 應用程序的用戶在每一頁僅停留幾分鐘,就應該縮短會話的默認超時值。過長的會話超時值將導致打開的會話過多而耗盡您的服務器的內存資源。對于一個特定的會話,如果您想設置一個小于默認超時值的超時值,可以設置 Session 對象的 Timeout 屬性。例如,下面這段腳本將超時值設置為 5 分鐘。

< % Session.Timeout = 5 %>

       當然你也可以設置一個大于默認設置的超時值,Session.Timeout 屬性決定超時值。你還可以通過 Session 對象的 Abandon 方法顯式結束一個會話。例如,在表格中提供一個“退出”按鈕,將按鈕的 ACTION 參數設置為包含下列命令的 .asp 文件的 URL。 

< % Session.Abandon %>

(二)Session的用法:

一、使用Session設定權限
Session簡介:
簡單來說就是服務器給客戶端的一個編號。當一臺WWW服務器運行時,可能有若干個用戶瀏覽正在運正在這臺服務器上的網站。當每個用戶首次與這臺WWW服務器建立連接時,他就與這個服務器建立了一個Session,同時服務器會自動為其分配一個SessionID,用以標識這個用戶的唯一身份。這個SessionID是由WWW服務器隨機產生的一個由24個字符組成的字符串。
-Session的初次使用

protected void Page_Load(object sender, EventArgs e){//這是頁面的初始化  if (!Page.IsPostBack)  {//判斷是否為初次執行   if (Object.Equals(Session["AdminName"], null))   {//判斷在Session["AdminName"]是否存在值    Response.Redirect("ErrorPage.aspx", true);   }   else   {//要是存在則記錄下這個人的用戶名   Name.Text = Session["AdminName"].ToString();   }  }}

二、進行頁面傳值

在頁面之間傳遞信息有許多方式:
第一:可以使用QueryString
第二:可以使用Session
第三:Server.Transfer
這三種傳值方式都有利有弊,下面我以我的經驗給大家講解一下
首先:QueryString
QueryString是一種非常簡單的傳值方式,其缺點就是會把要傳遞的值顯示在瀏覽器的地址欄中,并且此方法不能夠傳遞對象。如果你想傳遞一個安全性不是那么重要或者是一個簡單的數值時。使用此方式最好不過。
下面通過一個小例子來說明一下
1.創建一個Web頁面,叫SendMessage.aspx
2.在頁面內添加兩個TextBox,叫TxtName,TxtEmail,與一個Button,叫Submit

 protected void Submit_Click(object sender, EventArgs e) {  String Url = "ReceiveMessage.aspx?Name=" +  TxtName.Text + "&Email=" + TxtEmail.Text;  Response.Redirect(Url); }

3.再創建一個接收信息頁面,叫ReceiveMessage.aspx
4.在頁面內添加兩個Label,叫LbName,LbEmail

 protected void Page_Load(object sender, EventArgs e) {//使用Request來接收由上個頁面傳遞過來的值,分別顯示在頁面上  LbName.Text = Request.QueryString["Name"];  LbEmail.Text = Request.QueryString["Email"]; }

-再次:使用Session變量
使用Session變量傳值是一種最常見的方式了,此種方式不僅可以把值傳遞到下一個頁面,還可以交叉傳遞到多個頁面,直至把Session變量的值Remove后,才消失
下面舉例說明
1.創建一個頁面,叫SendSession
2.在頁面內添加兩個TextBox,叫TxtName,TxtEmail,添加一個Button,叫Submit

 protected void Submit_Click(object sender, EventArgs e) {//可以使用Session的Add方法  Session["Name"] = TxtName.Text;  //可以使用Session.Add("Name",TxtName.Text);  Session["Email"] = TxtEmail.Text;  //可以使用Session.Add("Email",TxtEmail.Text);  Response.Redirect("ReceiveMessage.aspx"); }

3.再創建一個頁面,叫ReceiveMessage.aspx
4.在頁面內添加兩個Label,叫LbName,LbEmail

 protected void Page_Load(object sender, EventArgs e) {  LbName.Text = Session["Name"].ToString();  LbEmail.Text = Session["Email"].ToString();  Session["Name"].Remove();  Session["Email"].Remove();  //使用結束要清除Session中的值 }

這是使用Session傳遞數值,此方式耗費服務器的資源,盡量少使用
-再次:使用Server.Transfer
這種傳遞方式有點復雜,但也可以是一種值傳遞方式
下面舉例說明一下:
1.創建一個頁面,叫SendMessage.aspx
2.在頁面內添加兩個TextBox,叫TxtName,TxtEmail,添加一個Button,叫Submit

 protected void Submit_Click(object sender, EventArgs e) {  Server.Transfer("ReceiveMessage.aspx"); }//再添加一個屬性 public String Name {  Get  {   return TxtName.Text;  } } public String Email {  Get  {   return TxtEmail.Text;  } }

3.再創建一個頁面,叫ReceiveMessage.aspx
4.在頁面放兩個Label,叫LbName,LbEmail

 protected void Page_Load(object sender, EventArgs e) {  //創建原始窗體的實例SendMessage wf1  //獲得實例化的句柄  wf1=(SendMessage)Context.Handler;  Label1.Text=wf1.Name;  Label2.Text=wf1.EMail; }

以上就是本文的全部內容,希望對大家學習理解ASP.NET中Session的用法有所幫助。



注:相關教程知識閱讀請移步到ASP.NET教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲精品美女在线| 国产精品男人的天堂| 性欧美xxxx视频在线观看| 一区二区三区高清国产| 亚洲无亚洲人成网站77777| 日韩av中文字幕在线免费观看| 国产精品男人的天堂| 欧美成人精品激情在线观看| 国产精品久久久久久超碰| 日韩av电影中文字幕| 欧美日韩一区二区免费在线观看| 国产精品第2页| 欧美日韩一区二区免费在线观看| 成人激情av在线| 一区二区在线视频播放| 欧美大片第1页| 精品欧美国产一区二区三区| 欧美风情在线观看| 亚洲第一中文字幕| 欧美国产欧美亚洲国产日韩mv天天看完整| 亚洲欧洲视频在线| 亚洲男人的天堂网站| 亚洲午夜久久久久久久| 久热国产精品视频| 国产精品成人一区| 国产日韩精品综合网站| 成人中文字幕在线观看| 欧美亚洲日本黄色| 精品久久久久久亚洲国产300| 91免费高清视频| 国产丝袜一区视频在线观看| 91国产美女视频| 91美女片黄在线观| 欧美成人黑人xx视频免费观看| 久久国产精品免费视频| 国产精品自产拍在线观| 亚洲欧美日韩成人| 亚洲美女av在线播放| 成人免费黄色网| 国产九九精品视频| 久久久国产一区二区| 日本午夜人人精品| 久久综合电影一区| 亚洲午夜av久久乱码| 日韩美女在线播放| 91久久嫩草影院一区二区| 欧美在线视频网| 狠狠色狠色综合曰曰| 日韩av在线免费观看| 欧美日韩中文字幕综合视频| 91精品视频在线免费观看| 中文字幕精品影院| 98精品在线视频| 高清一区二区三区四区五区| 热re91久久精品国99热蜜臀| 性色av一区二区三区| 欧美在线性视频| 两个人的视频www国产精品| 久久九九国产精品怡红院| 久久亚洲一区二区三区四区五区高| 岛国av在线不卡| 国产精品久久久久久久久免费| 欧美激情18p| 国产精品小说在线| 成人午夜两性视频| 亚洲视屏在线播放| 欧美日韩视频免费播放| 亚洲电影免费观看高清完整版在线观看| 国产精品高精视频免费| 91成人天堂久久成人| 亚洲欧洲一区二区三区久久| 日韩欧美在线播放| 亚洲有声小说3d| 国产精品免费电影| 亚洲国产精品电影| 91理论片午午论夜理片久久| 久久综合五月天| 狠狠躁夜夜躁人人爽天天天天97| 中文字幕九色91在线| 欧美电影在线观看网站| 欧美日本在线视频中文字字幕| 91精品在线一区| 高清欧美电影在线| 国产精品美女视频网站| 国产精品第1页| 高清欧美性猛交| 欧美亚洲伦理www| 亚洲视频在线观看视频| 国产欧美欧洲在线观看| 欧美日韩中文字幕在线视频| 久久视频在线播放| 日韩国产欧美区| 国产精品91久久久| 久久的精品视频| 日韩精品在线观看一区| 国产精品专区一| 成人h视频在线| 久久久精品一区二区三区| 国产男人精品视频| 精品高清美女精品国产区| 欧美精品在线第一页| 69视频在线免费观看| 亚洲精品日韩丝袜精品| 日韩av电影国产| 欧美另类在线播放| 日韩美女免费观看| 国产一区私人高清影院| 日韩欧美精品免费在线| 欧美激情视频播放| 久久久久久久久久久91| 欧洲日韩成人av| 91最新在线免费观看| 亚洲午夜精品视频| 亚洲变态欧美另类捆绑| 日本午夜人人精品| 成人看片人aa| 日韩免费黄色av| 91日本在线视频| 精品国产一区二区在线| 欧美福利视频在线| 亚洲精品国产拍免费91在线| 国产91网红主播在线观看| 日韩网站免费观看高清| 日韩av在线免费观看一区| 欧美精品999| 欧美午夜片在线免费观看| 久久久999国产精品| 最好看的2019的中文字幕视频| 亚洲国产高清高潮精品美女| 欧美成人国产va精品日本一级| 精品福利一区二区| 日韩久久精品成人| 亚洲精品电影网站| 黑人狂躁日本妞一区二区三区| 久久精品国产精品亚洲| 成人国产精品日本在线| 亚洲欧美日韩中文在线| 国产精品jvid在线观看蜜臀| 亚洲视频专区在线| 精品中文字幕在线2019| 最近中文字幕日韩精品| 欧美大片在线看| 国产精品91在线| 欧美精品免费在线观看| 亚洲网在线观看| 久久91精品国产91久久久| 成人免费自拍视频| 精品中文字幕在线观看| 欧美裸体xxxxx| 日韩中文字幕在线免费观看| 欧美剧在线观看| 精品久久久久久国产91| 日韩中文在线视频| 成人国内精品久久久久一区| 超碰91人人草人人干| 亚洲xxx大片| 国产精品一区二区三区久久久| 久久亚洲国产成人| 精品视频在线播放免| 日韩av免费在线| 国产精品美女无圣光视频| 北条麻妃久久精品| 国产精品视频公开费视频| 粉嫩av一区二区三区免费野|