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

}

注:计算出的在线人数在必定时间段内是准确的,若是要获取精确的在线人数,能够将登陆信息存储在后台数据库中或者读取当前会话集中对象的数量。

相关文章
相关标签/搜索