ASP.NET中Application對象的使用

Application對象
       用於共享應用程序級信息,即多個用戶共享一個Application對象。在第一個用戶請求ASP.NET文件時,將啓動應用程序並創建Application對象。一旦Application對象被創建,它就可以共享和管理整個應用程序的信息。在應用程序關閉之前,Application對象將一直存在。所以,Application對象是用於啓動和管理ASP.NET應用程序的主要對象。

        應用程序狀態允許保存被所有客戶訪問的全局對象。應用程序狀態基於 System.Web.HttpApplicationState 類,該類在 Web 頁面中通過內建的 Application 對象提供。

       使Application對象存儲和維護某些值,就要通過定義變量來完成。Application對象定義的變量爲應用程序級變量,即全局變量。變量可以在Global.asax文件中進行聲明。 

       例子:
       訪問計數器主要用來記錄應用程序曾經被訪問次數的組件。用戶可以通過Application對象和Session對象實現這一功能。示例主要是在Global.asax文件中對訪問人數進行統計,並在Default.aspx文件中將統計結果顯示。

       第一步 添加一個全局應用程序類Global.asax
       1 在該文件的Application_Start事件中將訪問數初始化爲0
       2 當有新的用戶訪問網站時,將建立一個新的Session對象,並在Session對象的Session_Start事件中對Application對象加鎖,以防止因爲多個用戶同時訪問頁面造成並行,同時將訪問人數加1;
       3 當用戶退出該網站時,將關閉該用戶的Session對象,同時對Application對象加鎖,然後將訪問人數減1。

using System;
using System.Web;

namespace WebApplication1
{
    public class AspWebGlobal : HttpApplication
    {
        protected void Application_Start(object sender, EventArgs e)
        {
            Application.Add("LiveSessionCount", 0);
            Application["LiveSessionCount"] = 0;
        }

        protected void Session_Start(object sender, EventArgs e)
        {
            Application.Lock();
            Application["LiveSessionCount"] = (int) Application["LiveSessionCount"] + 1;
            Application.UnLock();
        }

        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)
        {
            Application.Lock();
            Application["LiveSessionCount"] = (int) Application["LiveSessionCount"] - 1;
            Application.UnLock();
        }

        protected void Application_End(object sender, EventArgs e)
        {
        }
    }
}


      第二步 在用戶頁面調用展示
      將訪問人數在網站的默認主頁Default.aspx中顯示出來。在Default.aspx頁面上添加了一個Label控件,用於顯示訪問人數。

using System;
using System.Web.UI;

namespace WebApplication1
{
    public partial class WebForm1 : Page
    {
        private string bw_name;

        protected void Page_Load(object sender, EventArgs e)
        {
            lab_session.Text = Application["LiveSessionCount"].ToString();

            var httpBrowser = Request.Browser;

            bw_name = httpBrowser.Type;
        }
    }
}

      事實上,ASP.NET 中極少使用應用程序狀態,因爲它的兩個最常用的功能已經被更簡單化 。

      現在這類常量可以保存在web.config中,它通常更爲靈活,因爲它易於修改而不需要更改代碼或重新編譯應用程序。還可以在 ASP.NET 的緩存中保存常用的信息。應用程序狀態的很多應用可以使用緩存有效替換。
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章