ASP.NET頁面對象 - Application

 獲取請求的頁的HttpApplicationState 對象。 web

1、HttpApplicationState  數據庫

      做用:啓用 ASP.NET 應用程序中多個會話和請求之間的全局信息共享。 數組

      ASP.NET 應用程序的概念:是單個 Web 服務器上的某個虛擬目錄及其子目錄範圍內的全部文件、頁、處理程序、模塊和代碼的總和。 瀏覽器

      HttpApplicationState 類的單個實例在客戶端第一次從某個特定的 ASP.NET 應用程序虛擬目錄中請求任何 URL 資源時建立。對於 Web 服務器上的每一個 ASP.NET 應用程序都要建立一個單獨的實例。而後經過內部 Application 對象公開對每一個實例的引用。 安全

Application對象是HttpApplicationState類的一個實例,它能夠產生一個全部Web應用程序均可以存取的變量,這個變量的能夠存取範圍涵蓋所有使用者,也就是說只要正在使用這個網頁的程序均可以存取這個變量。 服務器

應用程序狀態不在網絡場(應用程序被多臺服務器承載)或網絡園(應用程序被同一臺計算機上的多個進程承載)中共享。 網絡

 

2、HttpApplicationState 成員 app

HttpApplicationState 類型公開如下成員。 函數

 方法 性能

名稱

說明

Add

將新的對象添加到 HttpApplicationState 集合中。

BaseAdd

將具備指定鍵和值的項添加到 NameObjectCollectionBase 實例中。 (繼承自NameObjectCollectionBase。)

BaseClear

移除 NameObjectCollectionBase 實例中的全部項。 (繼承自NameObjectCollectionBase。)

BaseGet

已重載。

BaseGetAllKeys

返回 String 數組,該數組包含 NameObjectCollectionBase 實例中的全部鍵。 (繼承自NameObjectCollectionBase。)

BaseGetAllValues

已重載。

BaseGetKey

獲取 NameObjectCollectionBase 實例的指定索引處的項鍵。 (繼承自NameObjectCollectionBase。)

BaseHasKeys

獲取一個值,經過該值指示 NameObjectCollectionBase 實例是否包含鍵不爲nullNothingnullptrnull 引用(在 Visual Basic 中爲 Nothing 的項。 (繼承自NameObjectCollectionBase。)

BaseRemove

移除 NameObjectCollectionBase 實例中具備指定鍵的項。 (繼承自NameObjectCollectionBase。)

BaseRemoveAt

移除 NameObjectCollectionBase 實例的指定索引處的項。 (繼承自NameObjectCollectionBase。)

BaseSet

已重載。

Clear

 HttpApplicationState 集合中移除全部對象。

Equals

肯定指定的 Object 是否等於當前的 Object (繼承自 Object。)

Finalize

容許 Object 垃圾回收回收 Object 以前嘗試釋放資源並執行其餘清理操做。 (繼承自Object。)

Get

已重載。 經過名稱或索引獲取 HttpApplicationState 對象。

GetEnumerator

返回循環訪問 NameObjectCollectionBase 的枚舉數。 (繼承自NameObjectCollectionBase。)

GetHashCode

用做特定類型的哈希函數。 (繼承自 Object。)

GetKey

經過索引獲取 HttpApplicationState 對象名。

GetObjectData

實現 ISerializable 接口,並返回序列化 NameObjectCollectionBase 實例所需的數據。(繼承自 NameObjectCollectionBase。)

GetType

獲取當前實例的 Type (繼承自 Object。)

Lock

鎖定對 HttpApplicationState 變量的訪問以促進訪問同步。

MemberwiseClone

建立當前 Object 的淺表副本。 (繼承自 Object。)

OnDeserialization

實現 ISerializable 接口,並在完成反序列化以後引起反序列化事件。 (繼承自NameObjectCollectionBase。)

Remove

 HttpApplicationState 集合中移除命名對象。

RemoveAll

 HttpApplicationState 集合中移除全部對象。

RemoveAt

按索引從集合中移除一個 HttpApplicationState 對象。

Set

更新 HttpApplicationState 集合中的對象值。

ToString

返回表示當前 Object  String (繼承自 Object。)

UnLock

取消鎖定對 HttpApplicationState 變量的訪問以促進訪問同步。

 屬性

名稱

說明

AllKeys

獲取 HttpApplicationState 集合中的訪問鍵。

Contents

獲取對 HttpApplicationState 對象的引用。

Count

獲取 HttpApplicationState 集合中的對象數。 (重寫 NameObjectCollectionBase..::.Count。)

IsReadOnly

獲取或設置一個值,經過該值指示 NameObjectCollectionBase 實例是否爲只讀的。 (繼承自NameObjectCollectionBase。)

Item

已重載。 獲取對 HttpApplicationState 集合中的對象的訪問。重載該屬性以容許經過名稱或數字索引訪問對象。

Keys

獲取 NameObjectCollectionBase..::.KeysCollection 實例,該實例包含NameObjectCollectionBase 實例中的全部鍵。 (繼承自 NameObjectCollectionBase。)

StaticObjects

獲取由 <object> 標記聲明的全部對象,其中範圍設置爲 ASP.NET 應用程序中的「Application」

 顯式接口實現

名稱

說明

ICollection..::.CopyTo

從目標數組的指定索引處開始將整個 NameObjectCollectionBase 複製到兼容的一維 Array (繼承自 NameObjectCollectionBase。)

ICollection..::.IsSynchronized

獲取一個值,該值指示對 NameObjectCollectionBase 對象的訪問是否同步(線程安全)。 (繼承自 NameObjectCollectionBase。)

ICollection..::.SyncRoot

獲取一個對象,該對象可用於同步對 NameObjectCollectionBase 對象的訪問。(繼承自 NameObjectCollectionBase。)

 

3、Application應用

Application用於保存全部用戶共用的數據信息。在ASP中,若是被保存的數據在應用程序的生存期中根本不會改變或者不多改變,那麼使用Application對象保存是理想的選擇。可是在ASP.NET中相似的配置數據最好保存在Web.config文件中。若是使用Application對象,一個須要考慮的問題是任何寫操做都要在Application_OnStart事件(global.aspx)中完成。儘管使用Application.LockApplication.Unlock方法來避免寫操做的同步,可是它串行化了對Application對象的請求,當網站訪問量大的時候會產生嚴重的性能瓶頸。所以最好不要用此對象保存大的數據集。

Global.asax中的事件

事件 說明
Application_Start
在HttpApplication類的第一個實例建立時,該事件被觸發
Application_End
在httpApplication類的最後一個實例被銷燬時,該事件被觸發.在一個應用程序的生命週期內只被觸發一次
Application_BeginRequest
每次頁面請求開始時(理想狀況下是在加載或刷新頁面後)觸發
Application_EndRequest
每次頁面請求結束時(即每次在瀏覽器上執行頁面時)觸發
Application_Start
每次新會話開始時觸發
Application_End
會話結束時觸發


使用 Application 對象保存信息的代碼以下:

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();

}

注:計算出的在線人數在必定時間段內是準確的,若是要獲取精確的在線人數,能夠將登陸信息存儲在後臺數據庫中或者讀取當前會話集中對象的數量。

相關文章
相關標籤/搜索