获取请求的页的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();
}
注:计算出的在线人数在必定时间段内是准确的,若是要获取精确的在线人数,能够将登陆信息存储在后台数据库中或者读取当前会话集中对象的数量。