首页 理论教育 ASP.NET应用程序开发技术中的相关知识与技术

ASP.NET应用程序开发技术中的相关知识与技术

时间:2023-10-21 理论教育 版权反馈
【摘要】:Global.asax文件驻留在ASP.NET应用程序的根目录中。运行时,分析Global.asax并将其编译到一个动态生成的.NET Framework类,该类是从HttpApplication基类派生的。配置ASP.NET,以便自动拒绝对Global.asax文件的任何直接的URL请求;外部用户不能下载或查看其中的代码。当用户请求ASP.NET程序后,就会替每位用户建立Session时间和Application对象,接着检查ASP.NET应用程序是否含有Global.asax文件。

ASP.NET应用程序开发技术中的相关知识与技术

1.Application对象

(1)Application对象成员说明

Application对象包含的属性、方法如表6-1、表6-2所示:

表6-1 Application对象常用属性

978-7-111-43260-9-Chapter06-3.jpg

表6-2 Application对象常用方法

978-7-111-43260-9-Chapter06-4.jpg

(2)Application对象的使用

1)添加新的Application对象:

Application["count"]=TextBox1.Text;或Application.Add("count",TextBox1.Text);

2)获取Application对象的值:

Label1.Text=Application["count"].ToString();或Label1.Text=Application.Get("count").ToString();

3)更新Application对象的值:

Application.Set("count",TextBox1.Text);

4)清除指定的Application对象:

Application.Remove("count");

5)清除所有Application对象:

Application.Remove();或Application.Clear();

(3)应用程序状态同步

在并发处理客户端的请求时,应用程序中的多个线程可以同时访问存储在应用程序状态中的值,这就可能出现多个用户同时存取同一个Application对象的情况。当多个用户修改同一个Application对象时,就可能出现数据不一致的问题。Application对象提供了Lock和UnLock方法来解决同步访问的问题。(www.xing528.com)

对Application对象调用Lock方法可以锁定该Application对象,以便让当前用户线程单独对该Application对象进行写入和修改。当写入和修改完成后,对Application对象调用UnLock方法,解除对当前Application对象的锁定,这样其他用户线程才能对Application对象进行操作。一般情况下Lock方法和UnLock方法应该成对使用。如果没有使用UnLock方法解除锁定,则当请求完成、请求超时或请求执行过程中出现未处理的错误并导致请求失败时,.Net Framework将自动解除锁定,防止应用程序出现死锁。

2.Global.asax文件

(1)Global.asax文件的作用

Global.asax文件(也称为ASP.NET应用程序文件)是一个可选的文件,该文件包含响应ASP.NET或HTTP模块所引发的应用程序级别和会话级别事件的代码。Global.asax文件驻留在ASP.NET应用程序的根目录中。运行时,分析Global.asax并将其编译到一个动态生成的.NET Framework类,该类是从HttpApplication基类派生的。配置ASP.NET,以便自动拒绝对Global.asax文件的任何直接的URL请求;外部用户不能下载或查看其中的代码。只在希望处理应用程序事件或会话事件时,才应创建它。

(2)Global.asax文件的创建和文件结构

解决方案资源管理器中,右键单击Web站点;在弹出菜单中单击“添加新项”,在打开的添加新项对话框中选择“全局应用程序类”(如果同一网站内已经建立过就看不到此项目),如图6-3所示;点击“添加”按钮完成添加。

978-7-111-43260-9-Chapter06-5.jpg

图6-3 添加全局应用程序类Global.asax

添加完毕,Global.asax文件自动打开,Global.asax文件主要定义了Web应用程序的Application_Start()、Application_End()、Session_Start()和Session_End()等事件处理程序,文件的结构如下所示:

978-7-111-43260-9-Chapter06-6.jpg

上述第1行程序代码是使用Application命令的Language属性声明使用Visual C#语法,在<script>标记中是Application和Session对象的事件处理程序,其说明如表6-3所示。

表6-3 Global.asax事件处理程序简介

978-7-111-43260-9-Chapter06-7.jpg

(3)Global.asax文件的执行

在ASP.NET的Web应用程序中使用Global.asax文件时,一个Web应用程序只能有唯一的Global.asax文件,其位置是Web应用程序的启动点目录。

当用户请求ASP.NET程序后,就会替每位用户建立Session时间和Application对象,接着检查ASP.NET应用程序是否含有Global.asax文件。

如果有Global.asax文件,就将它编译成继承HttpApplication类的.NET Framework类,然后在执行ASP.NET文件的程序代码前触发Application_Start事件,执行Global.asax文件的Application_Start()事件处理程序,并建立Session对象,因为Global.asax文件存在,接着执行Session_Start()事件处理程序。

当Session时间超过TimeOut属性的设定(默认20min)或执行Abandon()方法,表示Session时间结束,就触发Session_End事件执行Session_End()事件处理程序,处理程序在关闭Session对象前执行。Web服务器如果关机,在关闭Application对象前就会执行Application_End()事件处理程序,当然也会结束所有用户的Session时间,执行所有用户的Session_End()事件处理程序。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈