Username: Password:

正确使用ASP中的global.asa
来源:作者: 发布时间:2007-11-09 05:14:02

正确使用global.asa是ASP研发者的一个一起问题。最主要的是要知道什么时候该用Virtual Application,什么时候该用Virtual directory,并且知道他们的不同。

  Virtual Directories(虚拟目录)
  简而言之,virtual directories是虚拟出来的,不一定跟web root在同一个的目录上,能够是其他的。但是您能够像使用web root上的其他目录相同使用他。当运行global.asa以后,ASP就把任何的虚拟目录看成是应用程式根目录上的子目录。
  值得注意,假如您的目录已是website root上的一个物理目录,那就没有必要再去为那个目录做虚拟目录了。当然,您有也能够这样做。假如您的目录的路径实在是太长,长到您无法忍受,想他短一点。您能够用建虚拟目录的方法。使他短些,容易记住。例如:原来的目录http://mysite.com/directory1/directory 2/file.asp,您能够为他建一个虚拟的目录,http://mysite.com/directory2/file.asp。这样就方便多了了。
  
  Virtual Applications(虚拟应用程式)
  Virtual Applications 是个单独于website的web applications,而他跟Virtual Directories相同,不一定是web root上的一个目录。能够是从其他的目录虚拟出来的。ASP不允许应用程式共享他们的application和session变量,换句话说,就是应用程式A不能访问应用程式B(包括web root,因为web root也是看作一个应用程式的根。)的application和session变量,他们是私有的。反之亦然。当您确信这个应用程式无需和整个website、website上其他子目录上的ASP脚本共享application和session变量,或您想在同样的内存空间里隔离一个进程来运行应用程式时。您使用Virtual Applications是正确的。
  要注意的一点是:在IIS 4.0里面的“新虚拟目录向导” 所建立的virtual directory(虚拟目录)缺省就是个virtual application(虚拟应用程式)。要把他变回virtual directory的话,您能够在目录的“属性”里,选择“目录”标签,单击“卸载”。

  小心使用多个 Global.asa
  在一个website里面使用多个Global.asa,我们必须要注意,因为那是很容易导致变量超出范围而丢失的。通常我们必须限制在整个website上的Global.asa的树木,在每一个应用程式的的根目录里面放一个。这是保持session和application变量比较好的方法,不至于他们会丢失。通过在各个目录上放置global.asa文档,我测试的asp文档,能够帮助我们理解他们的关系。

  例子,下面是个website的配置。在这个website下面有两个目录。一个Virtual Application(虚拟应用程式)叫admin,一个Virtual Directory(虚拟目录)叫images。在每一个目录下有2个文档:global.asa和default.asp。每一个目录里的default.asp都是相同的,global.asa则根据不同的目录有所改变。
  这个是default.asp的内容:
<%
Response.Write "Session Application_Directory = " &
Session("application_directory") & "

"
Response.Write "Session Virtual_Directory = " &
Session("virtual_directory") & "

"
Response.Write "Session Directory = " & Session("directory") & "
"
%>

website root上global.asa的内容:
SUB Session_OnStart
Session("virtual_directory") = "Executed"
Session("directory") = "Executed"
END SUB

当您用浏览器浏览default.asp时,得到的结果是:
Session Application_Directory =
Session Virtual_Directory = Executed
Session Directory = Executed

  Virtual directory(虚拟目录) images 上global.asa的内容是(把websiteroot上的global.asa稍微做修改):

SUB Session_OnStart
Session("virtual_directory") = "Virtual Directory"
Session("directory") = "Virtual Directory"
END SUB

  用浏览器浏览default.asp(images上的default.asp)时,得到的结果是:
Session Application_Directory =
Session Virtual_Directory = Executed
Session Directory = Executed

  虽然在这个目录上的global.asa文档里,我们为session变量赋了新的值。但是显示的仍然是website root上global.asa所设的值。

Virtual Application(虚拟应用程式) Admin 上 global.asa的内容:

SUB Session_OnStart
Session("application_directory") = "Executed"
END SUB

  用浏览器浏览default.asp(admin上的default.asp)时,得到的结果是:
Session Application_Directory = Executed
Session Virtual_Directory =
Session Directory =

  正如您所看到的,Session("virtual_directory")和Session("directory") 的值不能从root web 那里“带”过来。

  Global.asa 参考
  Global.asa 文档是个可选文档,用户能够在该文档中指定事件脚本,并声明具备会话和应用程式作用域的对象。该文档的内容给用户显示的,而是用来存储事件信息和由应用程式全局使用的对象。该文档的名称必须是 Global.asa 且必须存放在应用程式的根目录中。每个应用程式只能有一个 Global.asa 文档。
  Global.asa 文档只能包含如下内容:
  用程式事件(Application_OnStart、Application_OnEnd)
  会话事件(Session_OnStart、Session_OnEnd)
   声明
  TypeLibrary 声明
  假如包含的脚本没有用

喜欢本文,那就收藏到:

    Del.icio.us Google书签 Digg Live Bookmark Technorati Furl Yahoo书签 Facebook 百度搜藏 新浪ViVi 365Key网摘 天极网摘 和讯网摘 博拉网 POCO网摘 添加到饭否 QQ书签 Digbuzz我挖网
相关评论  我也要评论
还没有关于此文章的相关评论!
  • 昵称: (为空则显示guest)
  • 评论分数: ★ ★ ★★★ ★★★★ ★★★★★
  • 评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
  • 导航
    赞助商
    文章类别
    订阅