程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> Asp.Net的狀態管理:Session、Application和Cache

Asp.Net的狀態管理:Session、Application和Cache

編輯:關於ASP.NET

上篇博文介紹了在客戶端狀態管理的兩種方式:http://www.cnblogs.com/wolf-sun/p/3329773.html。除了在客戶端上保存狀態外,還可以在服務器上保存狀態。使用客戶端的狀態,其缺點在於增加了數據在網絡之間的傳送。使用服務器端狀態的缺點在於,服務器必須給客戶端分配資源,下面詳細討論服務器端的狀態管理技術。

服務器端的狀態管理

Session

會話狀態與浏覽器會話相關。客戶在服務器上第一次打開Asp.Net頁面時,會話就開始了。當客戶在20分鐘之內沒有訪問服務器,會話結束,銷毀session。

可以在Global Application類(即全局應用程序類)中定義自己的代碼,會話開始或結束時運行。會創建Global.asax文件。在這個文件中,定義了一些時間處理程序例程:

public class Global : System.Web.HttpApplication
    {
    
        protected void Application_Start(object sender, EventArgs e)
        {
    
        }
    
        protected void Session_Start(object sender, EventArgs e)
        {
    
        }
    
        protected void Application_BeginRequest(object sender, EventArgs e)
        {
    
        }
    
        protected void Application_AuthenticateRequest(object sender, EventArgs e)
        {
    
        }
    
        protected void Application_Error(object sender, EventArgs e)
        {
    
        }
    
        protected void Session_End(object sender, EventArgs e)
        {
    
        }
    
        protected void Application_End(object sender, EventArgs e)
        {
    
        }
    }

會話狀態可以存儲在HttpSessionState對象中。與當前Http環境相關的會話狀態對象可以使用Page類的Session屬性來訪問。在Session_Start()事件處理程序中,可以初始化會話變量。在下面的實例中,名為mydata的會話狀態被初始化為0:

1  protected void Session_Start(object sender, EventArgs e)

2         {

3             Session["mydata"] = 0;

4         }

可以在頁面中通過使用會話狀態名讀取會話狀態。

protected void Unnamed2_Click(object sender, EventArgs e)
        {
            int val = (int)Session["mydata"];
            myLabel.Text = val.ToString();
            val += 5;
            Session["mydata"] = val;
        }

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved