浅析Global.asax文件对web服务应用程序部署的影响

2023-03-07

笔者在进行Web service ASP.NET应用程序开发的过程中, 调用某一个w e b s e r v i c e方法时, 系统弹出如下错误:

经过调查服务器的EVENLOG, 发现部分错误提示如下:

很显然, 这是一个因为调用Global.asax文件引发的错误。到底Global.asax是什么, 如何正确使用将是本文所要探讨的问题。

1 Global.asax概述

当创建W e b服务应用程序时, V S.n e t会在目标Web服务器上构造一个Web应用程序目录结构, 并在本地计算机上构造一个项目结构。其中, W e b窗体页相关的文件包含了Global.asax文件。Global.asax文件, 也被称做A S P.N E T应用程序文件, 是一个可选的文件, 只有在想要处理应用程序或会话事件时才创建。其作用主要是用来回应由ASP.NET或HTTP模块触发应用程序级和会话级事件。Global.asax文件驻留在A S P.N E T应用程序的根目录中。在运行时, 分析Global.asax并将其编译到一个动态生成的.NET Framework类, 该类是从HttpApplication基类派生的。配置ASP.NET, 以便自动拒绝对Global.asax文件的任何直接的U R L请求;外部用户不能下载或查看其中的代码。

Global.asax文件继承自Http Application类, 并在需要时将对象池中的对象分配给应用程序。使用类中的事件时最关键问题是要知道它们被触发的顺序。Application_Init和Application_Start事件在应用程序第一次启动时被触发一次。相似地, A p p l i c a t i o n_Disposed和Application_End事件在应用程序终止时被触发一次。

2 如何部署Global.asax文件

现在让我们来解决前言出现的问题。根据EVENLOG的信息应该是Global.asax的问题, a s p.n e t应用程序在运行时, 会先检查应用程序根目录下是否存在Global.asax文件, 如果存在就先调用该文件。问题很可能出现在:Global.asax可能是后来加上去的, 加上去后并没有重新编译整个应用图1表1程序项目。打开Global.asax文件看看, 上面应该有:

<%@A p p l i c a t i o n C o d e b e h i n d="G l o b a l.a s a x.c s"Inherits="dbsHCT.Global"%>。把它删除了或者如果Global.asax没用的话, 把这个文件删除了, 然后运行就可以了。

通过表1可以清楚的知道G l o b a l文件对项目部署的影响:

从表1可以看出:本地编译的DLL含有Global而服务器目录不管是否存在Global都正常 (情况1, 4) ;服务器目录上不存在Global不管本地Dll是否有Global都正常 (情况4, 5, 6) 。

此外, 若要在Global.asax文件中启用错误事件处理程序, W e b.c o n f i g文件不能为d e f a u l t R e d i r e c t指定文件。可以将C u s t o m E r r o r s设置为O f f或移除defaultRedirect设置。如果Web.config配置文件将C u s t o m E r r o r s设置为O f f, 则Global.asax的Application_Error事件处理程序将处理所有未处理的错误。当然了, 最好使用Try/Catch块包围具有错误的任何代码, 而不是完全依赖于全局错误处理程序。

3 结语

Global.asax文件是ASP.NET应用程序的中心点之一。它提供无数的事件来处理不同的应用程序级任务, 比如用户身份验证、应用程序启动以及处理用户会话等。正确部署Global.asax文件是构建出健壮的A S P.N E T应用程序的必要条件之一。

摘要:Global.asax文件对web服务应用程序的部署有一定的影响。本文通过一个web服务调用出错的例子, 阐述了Global.asax文件及其在系统部署中的作用, 最后根据实践经验, 给出了如何部署Global.asax文件的心得体会。

关键词:Global.asax,web services,部署

参考文献

[1] Russ Basiura;Mike Batongbacal, 等[著].康博[译].ASP.NET Web服务高级编程[M].北京:清华大学出版社, 2002.

[2] Matthew Reynolds;Karli Watson, 等[著].康博[译].NET企业应用高级编程[M].北京:清华大学出版社, 2002.

[3] (美) .Microsoft.WebMethodAttribute.TransactionOption Property, MSDN, 2005.

上一篇:图式理论在高中英语阅读教学中的应用下一篇:建筑工程成本管理问题分析