向系统进行注册的动作就是将EX12-5.dll注册成为MTS的组件之一,并且对系统的其他应用程序提供服务。
实际上在让ASP应用程序调用之前,如果单纯只是将动态链接库放在IIS/PWS的安装路径下是不够的。此时,负责执行ASP应用程序的“ASP.dll”仍无法知道这个新的动态链接库是否已经完全准备就绪。因此仍然需要这个步骤将新的动态链接库注册到操作系统中。
经过注册后的动态链接库不但具有可以让ASP应用程序调用的能力,而且当操作系统重新被启动时,它会自动到这个目录下激活这个动态链接库,这样将减轻系统管理员的负担。下面,就介绍如何将新的动态链接库注册到操作系统中的。
(1)首先进入操作系统的DOS“命令提示符”下,并且将工作的路径切换到IIS或PWS目录下。
特别说明 请读者特别注意,由于笔者所用的操作系统为Windows 2000,因此视为NT的技术平台,因而将目录切换到“CL\WINNT\ System32\inetsrv”目录下。如果属于Windows 9X操作平台,请将目录切换到“C:\Windows\System\inetsrv”目录下。
(2)取得“Regsvr32.exe”的参数。
在Windows操作系统中,要将动态链接库注册到操作系统中都是使用“regsvr32.exe”命令。以下是取得说明的方法以及相关的参数,如图12-26所示,得到帮助的方法是在“regsvr32.exe”后面加上“/?”参数。“regsvr32.exe”命令共有四个参数,分别是:
· “/u”参数:将ActiveX DLL从系统中卸载。
· “/s”参数:无信息模式;在注册的过程中,使用此模式将不会显示任何消息框。
· “/i”参数:将ActiveX DLL注册到系统中。
· “/n”参数:不调用DllRegisterServer,并且此参数必须配合“/i”参数使用。
(3)将ActiveX DLL注册到系统的MTS中。
接着在DOS命令提示符下,输入“regsvr32 EX12-5.dll”后,按回车键即可将“EX12-5.dll”注册到系统之中,供其他应用程序调用,并且在注册完成之后,系统将如图12-28所示,显示注册成功信息。
现在,“EX12-5.dll”已经成功地加入MTS组件中,开始提供给其他应用程序调用的服务。至于调用的方法,参数的设置,将在下一节介绍。
另外,建议各位读者在此范例的练习中,同样可以练习“regsvr32.exe”其他参数的使用。
1. 无法写入DLL时
这种情况是极有可能发生的。ActiveX DLL在正常运行时,由于是提供给ASP调用的,因此有一部分资料可能会使用ASP的Session对象记录。虽然这违反了MTS的设计准则,但是在某些ASP的应用中,这又是必须存在的方式。虽然当ActiveX DLL被注册到系统中后,可以直接使用“/u”参数卸载,但需注意的是此DLL目前仍未被任何应用系统调用,因此得以成功的完成卸载。但是,如果已经被调用过又该如何卸载呢?以下是这种情况下的处理方法。
当用户要对一个已打开的ActiveX DLL重新编译时,将出现如图12-29所示的禁止信息。
权限被拒绝,不是刚将“EX12-5.dll”复制到这个目录下的吗?即使笔者是在NT的操作平台下,是以系统管理员的身份登录。
事实上,这个问题与文件的操作权限无关,多半都不是因为没有权限而是因为该文件已经被打开了,正在被系统使用。
事实上IIS(包含PWS在内)都是由微软的“Internet服务管理器”负责管理的。由于我们使用的是ASP,当然也必须通过相关的对应才得以处理ASP程序命令。至于ASP在“Internet服务管理器”中如何对应、如何管理,请读者参考有关Microsoft IIS的技术手册,里面有许多非常详细的说明。
当使用ASP打开一个动态链接库时,即使该数据库在系统激活的过程中已经被系统所链接但是却仍然处于尚未打开状态。因此,一旦打开了相关的动态链接库之后,这个文件便一直保持着被打开的状态,并且驻留在系统的内存中,准备随时接受调用。
因此,要使得该文件重新恢复写入的权限,必须再关闭相关的服务程序“IIS Admin Service”。一旦这个服务中止,在NT平台上有关的服务将会一起被停止。这些服务包括了“WWW Service”、“FTP Service”、“SMTP Service”等相关的服务程序,此时就可以正常地更新动态链接库了。
12-4 调用MTS中的ASP组件
在本节中,笔者将示范如何调用MTS中的ASP组件。
12-4-1 开始编辑ASP程序
笔者使用Office 2000内附加的MSE(Microsoft Editor)编辑ASP文件。
范例程序:EX12-6
在本范例中,笔者将用MSE新建一个HTML文件,并且在此文件中加入一段调用“EX12-5.dll”的ASP程序代码,直接调用工程“Project1”中“Class1”模块中的“ShowMessage”子程序,并且将结果直接显示在网页上。如图12-31所示“EX12-6.asp”执行的结果。
范例说明
本范例使用MSE创建一新的HTML文件。
在这个HTML文件中,加入调用“EX12-5.dll”的ASP程序代码,并且将结果显示在网页中。
(1)请读者将下列ASP程序代码加入到新建的HTML文件中,如图12-32所示。
01. <%
02. Set MTStest = server.createobject("Project1.Class1")
03.
上一页 [1] [2] [3] [4] [5] [6] 下一页