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 的緩存中保存常用的信息。應用程序狀態的很多應用可以使用緩存有效替換。