在DELPHI中用IIS或PWS调试ISAPI程序 (作者:王发军)

kxy 2000-06-03 02:13:00
  调试ISAPI程序时,可暂时关闭WINDOWS对DLL文件的缓冲,使其能够被删除或覆盖。修改注册表使HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\W3SVC\Parameters\CacheExtensions=0 可以关闭WINDOWS对DLL文件的缓冲,这种情况下访问ISAPI应用程序的速度会大大变慢,因而该设置只限用于开发调试阶段;在调试结束后,不应再关闭WINDOWS对DLL文件的缓冲。笔者在实践中发现,上述方法在WINDOWS NT和IIS下是可行的,但是WINDOWS9X和PWS是却是不可行的,需要重新WWW发布服务才可以继续调试。下面笔者总结一下在PWS中开发调试ISAPI程序的经验,希望能对同行有所帮助。
  在为ASP开发COM控件以及开发一般ISAPI、WIN CGI程序时,程序调试过程中我们可以首先停止WWW发布服务,然后修改程序源码并生成可执行程序,再启动WWW发布服务测试可执行程序来查看程序运行结果。重复这个过程,我们就可以很方便地调试WWW应用程序了,而不用象以前一样把大量时间花在等待WINDOWS重新启动了。
  在下面的讨论中,我们假设WINDOWS所在目录为C:\Windows,PWS安装目录为C:\WIND
OWS\SYSTEM\inetsrv\。我们可以用“C:\WINDOWS\SYSTEM\inetsrv\pws.exe
/stop”命令来停止WWW发布服务并卸载所有被缓冲的ISAPI
DLL文件,可以用“C:\WINDOWS\SYSTEM\inetsrv\inetinfo.exe -e
w3svc”来启动WWW发布服务。建议大家在自己的桌面上建立两个快捷方式(如StopPWS、Star
tPWS),用于执行上面的两个命令来重新启动WWW发布服务。顺便提一下,在WINDOWS NT+IIS中,可以用“net stop IISAdmin”命令停止WWW发布服务来卸载所有被缓冲的ISAPI
DLL文件,用“net start w3svc”来启动WWW发布服务。
  在用DELPHI开发ISAPI/NSAPI应用程序时,我们甚至可以象调试普通应用程序一样,设置断点跟踪程序运行、用F7或F8单步跟踪、用Ctrl+F5查看某个变量的当前值,这无疑将大大有助于我们更好查找和修改程序中的错误,从而更快地完成开发任务。知道这个功能确实让笔者激动了一阵了,下面就讨论一下如何来实现这种调试功能。
  在打开ISAPI工程文件(PRJ文件)后,在DELPHI菜单中选择“Project->Options...”,设置Directories/Conditionals选项页中的Output Directory为你的DLL文件所在的测试目录(一般是具有“执行权限”的WWW目录如C:\INETPUB\WWWROOT\scripts);选择“Run->Parameters”,设置选项host application 为“C:\WINDOWS\SYSTEM\inetsrv\inetinfo.exe”,设置选项Run Parameters为“-e w3svc”,这样用F9或“Run->Run”运行工程时将同时启动WWW发布服务。
  现在假设我们已经完成了程序代码的编制工作并已经设置好断点准备跟踪,可以开始调试程序了。首先,应该确保WWW发布服务没有在运行(如果正在运行的话,系统状态区(System Tray)将会有“个人WEB管理器”(PWS)程序的图标出现,可以用“StopPWS”快捷方式将其停止,此时PWS程序图标将从系统状态区消失),否则就不能跟踪到程序中去了。用F9或“Run->Run”运行工程,PWS服务将随之启动(此时可以在系统状态看见PWS程序的图标),DELPHI窗体的标题将变为“Delphi YourProject[Running]”,然后在浏览器中以http://yourcomputername/YourDllPath/YourDll.DLL的方式运行ISAPI程序,DELPHI将会在代码编辑窗口中显示程序已运行到我们设置的断点,我们就可以象调试一般程序那样来调试ISAPI程序了,可以用F7或F8单步跟踪,也可以用Ctrl+F5查看变量的当前值。调试完毕后,就可以回到Delphi代码窗口修改程序源代码后重新开始调试了。注意,在调试过程中一定要等到程序运行完毕并在浏览器返回结果,不要在修改源代码时中止程序运行,也不要用“Ctrl-F2”或“Run->Program Reset”来中止程序运行,因为这样很容易导致WWW发布服务出现异常,这时候就只能重新启动WINDOWS或计算机了。
  以上方法在PWIN98+PWS4.0+DELPHI3.0和PWinNT4.0+IIS4.0+Delphi3.0下实验通过.
(作者:深圳润迅互联网公司 王发军 wangfajun@163.net http://wangfajun.163.net)
...全文
506 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
dudo 2000-06-13
  • 打赏
  • 举报
回复
我觉得开发ISAPI/NSAPI程序不如先把他做成cgi方式,重新编译不用重新启动服务器,调试起来也方便,可以大大提高工作效率。而delphi 做的cgi 程序要转成ISAPI/NSAPI程序有那么的简单。只要新开一个ISAPI/NSAPI工程去掉
其中的默认的单元,再加上我们做的cgi 程序的单元重新编译就成了ISAPI/NSAPI方式了。试试吧!!
蝈蝈俊 2000-06-03
  • 打赏
  • 举报
回复
开发、调试时改注册表最方便。
使用时肯定不能这么办。效率太差。

kxy 2000-06-03
  • 打赏
  • 举报
回复
NT中停止服务是可以,但是改注册表更方便.改了以后dll执行完就卸载了.
蝈蝈俊 2000-06-03
  • 打赏
  • 举报
回复
没有,刚刚发现的。现在好用了,真是谢谢。

kxy 2000-06-03
  • 打赏
  • 举报
回复
你有没有拷贝Delphi5\Source\Webmidas的文件到你的目录?
蝈蝈俊 2000-06-03
  • 打赏
  • 举报
回复
NT 中停止服务就可以了。

kxy 您有无用过李维的书《实战DELPHI5.x分布式多层应用-电子商务篇》中第二章的第一个列子?????
我现在用这个列子就是读不出数据???
XP HOME版的就没有iis啊,装不了滴。应该找个专业版的xp啊。 在WindowsXP家庭版上安装和使用IIS 很多家庭用户电脑上安装的是Windows XP家庭版。与Windows XP专业版相比,Windows XP家庭版不支持双CPU、多国语言、 EFS文件系统加密以及IIS(Internet Information Services)。因此,如果你想学习IIS,你会发现 Windows XP家庭版根本不能安装IIS或者PWS。按照常规的做法,我们只能重新安装Windows XP专业版或者降级使用 Windows 2000专业版,不过今天要和大家探讨的,是如何在Windows XP家庭版上成功地安装和使用IIS。 步骤1 首先我们需要准备一张Windows 2000的安装光盘,假设你的Windows XP家庭版安装在“C:\Windows”,启动记事本程序,在打开对话框中选择打开“C:\Windows\inf\sysoc.inf”,找到“[Components]”小节,并继续找到类似“iis= iis.dll,OcEntry,iis.inf,hide,7”的行,把这一行替换为“iis=iis2.dll,OcEntry, iis2.inf,,7”,之后保存文件。 步骤2 把Windows 2000专业版的光盘插入光驱,用Winrar打开光盘i386目录下的iis.dl_和iis.in_这两个CAB格式的文件,将解压缩得到的“iis.dll”改名为“iis2.dll”,复制到“C:\Windows\system32\setup\”目录下;将 “iis.inf”改名为“iis2.inf”,复制到“C:\Windows\inf\”目录下。 步骤3 打开控制面板,单击“添加删除程序”图标,然后在窗口左侧导航栏上单击“添加/删除Windows组件”按钮,在打开的“Windows组件向导” 中,选中“Internet信息服务(IIS)”前的复选框。单击右下角的“详细信息”按钮可以打开对话框,在该对话框中我们可以选择需要安装的IIS组件内容。选择完毕后单击“确定”按钮,退回到界面中再单击“下一步”,系统就会开始复制文件。 提示:如果在安装过程中系统需要插入Windows XP CD,或者需要你提供“exch_adsiisex.dll”文件,那是因为你按照默认的选项安装了IIS。要解决这个问题,只要清空“SMTP Service”选项前的复选框即可。如果进入窗口中,“Internet信息服务(IIS)” 选项无法选择,那么很可能因为你使用的“iis.dl_”和“iis.in_”是从Windows XP专业版中提取的,只要换成 Windows 2000专业版中的这两个文件即可。 步骤4 安装结束后,你可以打开“控制面板→性能和选项→管理工具”查看“Internet信息服务管理”。再打开IE,在地址栏中输入“localhost”后回车,验证一下IIS是否正常运行。 经过验证,WWW、FTP等几个服务经过这样的修改都可以在Windows XP家庭版上正常运行。不过经过这样处理安装的IIS在运行上可能存在某种未知的缺陷。

828

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧