正确使用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文件,可以帮助我们理解它们的关系。