獲取請求的頁的HttpApplicationState 對象。 web
1、HttpApplicationState 類 數據庫
做用:啓用 ASP.NET 應用程序中多個會話和請求之間的全局信息共享。 數組
ASP.NET 應用程序的概念:是單個 Web 服務器上的某個虛擬目錄及其子目錄範圍內的全部文件、頁、處理程序、模塊和代碼的總和。 瀏覽器
HttpApplicationState 類的單個實例在客戶端第一次從某個特定的 ASP.NET 應用程序虛擬目錄中請求任何 URL 資源時建立。對於 Web 服務器上的每一個 ASP.NET 應用程序都要建立一個單獨的實例。而後經過內部 Application 對象公開對每一個實例的引用。 安全
Application對象是HttpApplicationState類的一個實例,它能夠產生一個全部Web應用程序均可以存取的變量,這個變量的能夠存取範圍涵蓋所有使用者,也就是說只要正在使用這個網頁的程序均可以存取這個變量。 服務器
應用程序狀態不在網絡場(應用程序被多臺服務器承載)或網絡園(應用程序被同一臺計算機上的多個進程承載)中共享。 網絡
2、HttpApplicationState 成員 app
HttpApplicationState 類型公開如下成員。 函數
方法 性能
屬性
說明 |
|
獲取 HttpApplicationState 集合中的訪問鍵。 |
|
獲取對 HttpApplicationState 對象的引用。 |
|
獲取 HttpApplicationState 集合中的對象數。 (重寫 NameObjectCollectionBase..::.Count。) |
|
獲取或設置一個值,經過該值指示 NameObjectCollectionBase 實例是否爲只讀的。 (繼承自NameObjectCollectionBase。) |
|
已重載。 獲取對 HttpApplicationState 集合中的對象的訪問。重載該屬性以容許經過名稱或數字索引訪問對象。 |
|
獲取 NameObjectCollectionBase..::.KeysCollection 實例,該實例包含NameObjectCollectionBase 實例中的全部鍵。 (繼承自 NameObjectCollectionBase。) |
|
獲取由 <object> 標記聲明的全部對象,其中範圍設置爲 ASP.NET 應用程序中的「Application」。 |
顯式接口實現
說明 |
|
從目標數組的指定索引處開始將整個 NameObjectCollectionBase 複製到兼容的一維 Array。 (繼承自 NameObjectCollectionBase。) |
|
獲取一個值,該值指示對 NameObjectCollectionBase 對象的訪問是否同步(線程安全)。 (繼承自 NameObjectCollectionBase。) |
|
獲取一個對象,該對象可用於同步對 NameObjectCollectionBase 對象的訪問。(繼承自 NameObjectCollectionBase。) |
3、Application應用
Application用於保存全部用戶共用的數據信息。在ASP中,若是被保存的數據在應用程序的生存期中根本不會改變或者不多改變,那麼使用Application對象保存是理想的選擇。可是在ASP.NET中相似的配置數據最好保存在Web.config文件中。若是使用Application對象,一個須要考慮的問題是任何寫操做都要在Application_OnStart事件(global.aspx)中完成。儘管使用Application.Lock和Application.Unlock方法來避免寫操做的同步,可是它串行化了對Application對象的請求,當網站訪問量大的時候會產生嚴重的性能瓶頸。所以最好不要用此對象保存大的數據集。
Global.asax中的事件
事件 | 說明 |
Application_Start |
在HttpApplication類的第一個實例建立時,該事件被觸發 |
Application_End |
在httpApplication類的最後一個實例被銷燬時,該事件被觸發.在一個應用程序的生命週期內只被觸發一次 |
Application_BeginRequest |
每次頁面請求開始時(理想狀況下是在加載或刷新頁面後)觸發 |
Application_EndRequest |
每次頁面請求結束時(即每次在瀏覽器上執行頁面時)觸發 |
Application_Start |
每次新會話開始時觸發 |
Application_End |
會話結束時觸發 |
在Global.asax文件中
protected void Application_Start(Object sender, EventArgs e)
{
Application["zxrs"]=0;
}
protected void Session_Start(Object sender, EventArgs e)
{
Application.Lock();
Application["zxrs"] =(Int32)Application["zxrs"]+1;
Application.UnLock();
}
protected void Session_End(Object sender, EventArgs e)
{
Application.Lock();
Application["zxrs"] =(Int32)Application["zxrs"]-1;
Application.UnLock();
}
注:計算出的在線人數在必定時間段內是準確的,若是要獲取精確的在線人數,能夠將登陸信息存儲在後臺數據庫中或者讀取當前會話集中對象的數量。