![ASP.NET从入门到精通(第5版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/771/27111771/b_27111771.jpg)
2.3 Application对象
![](https://epubservercos.yuewen.com/745A13/15477657604593106/epubprivate/OEBPS/Images/Figure-P51_11204.jpg?sign=1739616624-jiLEmXAtszrrG3vl9RQJWa6awH57MhxP-0-ae62cc40b1de0a3a6081a85439af11b2)
视频讲解
2.3.1 Application对象概述
Application对象用于共享应用程序级信息,即多个用户共享一个Application对象。
在第一个用户请求ASP.NET文件时,将启动应用程序并创建Application对象。一旦Application对象被创建,它就可以共享和管理整个应用程序的信息。在应用程序关闭之前,Application对象将一直存在。所以,Application对象是用于启动和管理ASP.NET应用程序的主要对象。
2.3.2 Application对象的常用集合、属性和方法
Application对象的常用集合及说明如表2.6所示。
表2.6 Application对象的常用集合及说明
![](https://epubservercos.yuewen.com/745A13/15477657604593106/epubprivate/OEBPS/Images/Figure-T51_11217.jpg?sign=1739616624-w8YcjHnwY51gnF95wPJXx55yPJe1QIhy-0-c3adfed9a8042345a343193165e9391a)
Application对象的常用属性及说明如表2.7所示。
表2.7 Application对象的常用属性及说明
![](https://epubservercos.yuewen.com/745A13/15477657604593106/epubprivate/OEBPS/Images/Figure-T52_14399.jpg?sign=1739616624-SxvdEUJqBDs5pxviaZ0lu8RwtvypDaic-0-8365652fc824f4327169f629030d6f07)
Application对象的常用方法及说明如表2.8所示。
表2.8 Application对象的常用方法及说明
![](https://epubservercos.yuewen.com/745A13/15477657604593106/epubprivate/OEBPS/Images/Figure-T52_86401.jpg?sign=1739616624-h2HeD1rXoyy6NEehvaR6TtbHSiwBkJoI-0-8f3d0a05abe07a09be1fec815e780e6a)
2.3.3 使用Application对象存储和读取全局变量
使Application对象存储和维护某些值,就要通过定义变量来完成。Application对象定义的变量为应用程序级变量,即全局变量。变量可以在Global.asax文件或aspx页面中进行声明。语法如下:
![](https://epubservercos.yuewen.com/745A13/15477657604593106/epubprivate/OEBPS/Images/Figure-P52_86405.jpg?sign=1739616624-xplCAmMPgPL7bCoTG45MsyfrFBtwY49s-0-7faabc0650baa02746d84bb4a11262a7)
其中,varName是变量名。例如:
![](https://epubservercos.yuewen.com/745A13/15477657604593106/epubprivate/OEBPS/Images/Figure-P52_86406.jpg?sign=1739616624-hBWtbQkplJ6TwBJt1nY2ciZN8kigtMmk-0-d1c4d63cd74e307ec62fb167020b7976)
注意
由于应用程序中的所有页面都可以访问应用程序变量,所以为了确保数据的一致性,必须对Application对象加锁。
2.3.4 设计一个访问计数器
访问计数器主要用来记录应用程序曾经被访问次数的组件。用户可以通过Application对象和Session对象实现这一功能。下面就通过一个示例进行介绍。
【例2.6】访问计数器。(示例位置:mr\TM\02\06)
下面的示例主要是在Global.asax文件中对访问人数进行统计,并在Default.aspx文件中将统计结果显示出来。执行程序,示例运行结果如图2.7所示。
![](https://epubservercos.yuewen.com/745A13/15477657604593106/epubprivate/OEBPS/Images/Figure-P53_11224.jpg?sign=1739616624-go0l6VAhiTkkrLEuJ3Ssu9JBYPGdtiuz-0-9d23503187128d73f7a0668565415739)
图2.7 访问计数器
程序实现的主要步骤如下。
(1)新建一个网站,添加一个全局应用程序类(即Global.asax文件),在该文件的Application_Start事件中将访问数初始化为0,代码如下:
![](https://epubservercos.yuewen.com/745A13/15477657604593106/epubprivate/OEBPS/Images/Figure-P53_86409.jpg?sign=1739616624-HUDsqnvERMHmdBWWVHJRYas38JAslL41-0-74a0ea016d7df940a7ce045e9caed8dc)
当有新的用户访问网站时,将建立一个新的Session对象,并在Session对象的Session_Start事件中对Application对象加锁,以防止因为多个用户同时访问页面造成并行,同时将访问人数加1;当用户退出该网站时,将关闭该用户的Session对象,同时对Application对象加锁,然后将访问人数减1。代码如下:
![](https://epubservercos.yuewen.com/745A13/15477657604593106/epubprivate/OEBPS/Images/Figure-P53_86410.jpg?sign=1739616624-jdE49f5jWi7rSbnDXB3AFkMpXzkYWjaO-0-fab81bd797481f1d6c2f7c689f0cb11d)
(2)对Global.asax文件进行设置后,需要将访问人数在网站的默认主页Default.aspx中显示出来。在Default.aspx页面上添加了一个Label控件,用于显示访问人数。代码如下:
![](https://epubservercos.yuewen.com/745A13/15477657604593106/epubprivate/OEBPS/Images/Figure-P53_86411.jpg?sign=1739616624-58zpZwW95nT6P41wmg3F5vaW9XHFUNdH-0-9e93aeee9eed02396761a5b3ab9c3285)
2.3.5 聊天室
Application对象的一个典型的应用就是制作聊天室。下面就通过一个示例进行介绍。
【例2.7】聊天室。(示例位置:mr\TM\02\07)
下面的示例主要利用Application对象实现聊天室功能。执行程序,首先应该登录聊天室,在“用户名”文本框中输入登录用户的名称,再单击“登录”按钮进入聊天室。示例运行结果如图2.8所示。
![](https://epubservercos.yuewen.com/745A13/15477657604593106/epubprivate/OEBPS/Images/Figure-P54_14427.jpg?sign=1739616624-uHj08AYCrv80h01mQyawRKpXT5d5DNCr-0-329bd2171239408aa7776a533b3506a0)
图2.8 聊天室
程序实现的主要步骤如下。
(1)新建一个网站,其主页默认为Default.aspx,将其重命名为Login.aspx。
(2)在该网站中添加Default.aspx、Content.aspx和List.aspx 3个Web页面,其中,Default.aspx页面为聊天室的主页面,Content.aspx页面用来显示用户的聊天信息,List.aspx页面用来显示在线用户的列表。
(3)在该网站中添加一个Global.asax全局程序集文件,用来初始化Application对象值。
该聊天室是使用Application对象实现的,在应用程序启动时,应在Application对象的Application_Start事件中将所有数据初始化。代码如下:
![](https://epubservercos.yuewen.com/745A13/15477657604593106/epubprivate/OEBPS/Images/Figure-P54_86413.jpg?sign=1739616624-bXbZdCZE730jHMXeHS1B6uaficcHpdGT-0-f6d649996c5dbd91442f4e0129dfa8a8)
在聊天室主页面中单击“发送”按钮时,首先调用Application对象的Lock方法对所有Application对象进行锁定,然后判断当前聊天信息的记录数是否大于20。如果大于20,则清空聊天记录,并重新加载用户的聊天记录;否则,将把聊天内容、用户名和发信息时间保存在Application对象中。代码如下:
![](https://epubservercos.yuewen.com/745A13/15477657604593106/epubprivate/OEBPS/Images/Figure-P55_86416.jpg?sign=1739616624-1bJfwaLPsBGLzfdWLeF9TvpyzcrpTiaC-0-77c176a1f68acf6d3643f2768380592c)
加载显示聊天信息页面Content.aspx时,从Application对象中读取保存的聊天信息,并将其显示在TextBox文本框中。Content.aspx页面的Page_Load事件代码如下:
![](https://epubservercos.yuewen.com/745A13/15477657604593106/epubprivate/OEBPS/Images/Figure-P55_86417.jpg?sign=1739616624-Gh8WpdaaYrVCy9ZFuDGwY3yFPOMp3NC8-0-eaddbecfcd65af45fedcf7b919c8b6c1)