其他语言

本类阅读TOP10

·基于Solaris 开发环境的整体构思
·使用AutoMake轻松生成Makefile
·BCB数据库图像保存技术
·GNU中的Makefile
·射频芯片nRF401天线设计的分析
·iframe 的自适应高度
·BCB之Socket通信
·软件企业如何实施CMM
·入门系列--OpenGL最简单的入门
·WIN95中日志钩子(JournalRecord Hook)的使用

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
如何在c++builder中调试ISAPI(IIS5.0+window2000)

作者:未知 来源:月光软件站 加入时间:2005-5-13 月光软件站

最近做一个Web模块,需要做成ISAPI。ISAPI的调试需要很多技巧,我在网上找了很多文章,大多数都不是很完整,经过长时间的研究,终于总结出以下一些经验。在此与大家分享。

调试过程按照以下步骤:

1、打开 “Internet信息服务”,在你的web服务器上右击,弹出菜单中选择单击属性。(下图1)

图1

2、在“主目录”页面,设置“应用程序保护”为“低(IIS进程)”。如下图2

图2

这样IIS 就会把ISAPI的DLL导入它的进程内部,允许调试。用同样的方法设置调试的DLL所在的虚拟目录。

注意:如果不设为“低(IIS进程)”,你将会无法调试。

3、打开管理工具->服务 ,找到以下几个服务,将其停止,并且设置它的启动方式为“手动”。

  • Simple Mail Transport Protocol (SMTP)
  • World Wide Web Publishing Service
  • FTP Publishing Service
  • IIS Admin Service

    如果重启后IIS Admin Service在“已启动”状态,你就需要将其启动方式设为“禁用”。然后再次重启,看看它是否会启动。在IIS Admin Service启动的时候,是无法正常调试的。

    最近做一个Web模块,需要做成ISAPI。ISAPI的调试需要很多技巧,我在网上找了很多文章,大多数都不是很完整,经过长时间的研究,终于总结出以下一些经验。在此与大家分享。

    调试过程按照以下步骤:

    1、打开 “Internet信息服务”,在你的web服务器上右击,弹出菜单中选择单击属性。(下图1)

    图1

    2、在“主目录”页面,设置“应用程序保护”为“低(IIS进程)”。如下图2

    图2

    这样IIS 就会把ISAPI的DLL导入它的进程内部,允许调试。用同样的方法设置调试的DLL所在的虚拟目录。

    注意:如果不设为“低(IIS进程)”,你将会无法调试。

    3、打开管理工具->服务 ,找到以下几个服务,将其停止,并且设置它的启动方式为“手动”。

  • Simple Mail Transport Protocol (SMTP)
  • World Wide Web Publishing Service
  • FTP Publishing Service
  • IIS Admin Service

    如果重启后IIS Admin Service在“已启动”状态,你就需要将其启动方式设为“禁用”。然后再次重启,看看它是否会启动。在IIS Admin Service启动的时候,是无法正常调试的。

    4、打开管理工具->本地安全策略,在“本地策略->用户权力指派”中找到“以操作系统方式操作”的策略,双击,添加你当前的用户。如下图3

    图3

    6、重启电脑,让修改生效。

    7、将以下内容复制后保存为后缀reg的文件。双击合并入注册表。

    最近做一个Web模块,需要做成ISAPI。ISAPI的调试需要很多技巧,我在网上找了很多文章,大多数都不是很完整,经过长时间的研究,终于总结出以下一些经验。在此与大家分享。

    调试过程按照以下步骤:

    1、打开 “Internet信息服务”,在你的web服务器上右击,弹出菜单中选择单击属性。(下图1)

    图1

    2、在“主目录”页面,设置“应用程序保护”为“低(IIS进程)”。如下图2

    图2

    这样IIS 就会把ISAPI的DLL导入它的进程内部,允许调试。用同样的方法设置调试的DLL所在的虚拟目录。

    注意:如果不设为“低(IIS进程)”,你将会无法调试。

    3、打开管理工具->服务 ,找到以下几个服务,将其停止,并且设置它的启动方式为“手动”。

  • Simple Mail Transport Protocol (SMTP)
  • World Wide Web Publishing Service
  • FTP Publishing Service
  • IIS Admin Service

    如果重启后IIS Admin Service在“已启动”状态,你就需要将其启动方式设为“禁用”。然后再次重启,看看它是否会启动。在IIS Admin Service启动的时候,是无法正常调试的。

    4、打开管理工具->本地安全策略,在“本地策略->用户权力指派”中找到“以操作系统方式操作”的策略,双击,添加你当前的用户。如下图3

    图3

    5、重启电脑,让修改生效。

    6、将以下内容复制后保存为“将IIS 设置为普通进程.reg”。双击合并入注册表。这样你才能够进行调试。如果你的IIS安装在其他目录,则需要做一些修改。这里的默认目录为“ C:\WinNT\system32\inetsrv”

    REGEDIT4

    [HKEY_CLASSES_ROOT\AppID\{61738644-F196-11D0-9953-00C04FD919C1}]
    "LocalService"=-
    "RunAs"=-

    [HKEY_CLASSES_ROOT\AppID\{9F0BD3A0-EC01-11D0-A6A0-00A0C922E752}]
    "LocalService"=-
    "RunAs"=-

    [HKEY_CLASSES_ROOT\AppID\{A9E69610-B80D-11D0-B9B9-00A0C922E750}]
    "LocalService"=-
    "RunAs"="Interactive User"


    [HKEY_CLASSES_ROOT\ClsID\{61738644-F196-11D0-9953-00C04FD919C1}]
    "LocalService"=-

    [HKEY_CLASSES_ROOT\ClsID\{9F0BD3A0-EC01-11D0-A6A0-00A0C922E752}]
    "LocalService"=-

    [HKEY_CLASSES_ROOT\ClsID\{A9E69610-B80D-11D0-B9B9-00A0C922E750}]
    "LocalService"=-


    [HKEY_CLASSES_ROOT\ClsID\{61738644-F196-11D0-9953-00C04FD919C1}\LocalServer32]
    ""="c:\\winnt\\system32\\inetsrv\\inetinfo.exe -e w3svc"

    [HKEY_CLASSES_ROOT\ClsID\{9F0BD3A0-EC01-11D0-A6A0-00A0C922E752}\LocalServer32]
    ""="c:\\winnt\\system32\\inetsrv\\inetinfo.exe -e w3svc"

    [HKEY_CLASSES_ROOT\ClsID\{A9E69610-B80D-11D0-B9B9-00A0C922E750}\LocalServer32]
    ""="c:\\winnt\\system32\\inetsrv\\inetinfo.exe -e w3svc"


    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\IISADMIN]
    "Start"=dword:3

    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSDTC]
    "Start"=dword:3

    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W3SVC]
    "Start"=dword:3

    你可以使用以下注册表代码把IIS恢复为以服务方式运行。

    REGEDIT4

    [HKEY_CLASSES_ROOT\AppID\{61738644-F196-11D0-9953-00C04FD919C1}]
    "LocalService"="IISADMIN"
    "RunAs"=-

    [HKEY_CLASSES_ROOT\AppID\{9F0BD3A0-EC01-11D0-A6A0-00A0C922E752}]
    "LocalService"="IISADMIN"
    "RunAs"=-

    [HKEY_CLASSES_ROOT\AppID\{A9E69610-B80D-11D0-B9B9-00A0C922E750}]
    "LocalService"="IISADMIN"
    "RunAs"=-


    [HKEY_CLASSES_ROOT\ClsID\{61738644-F196-11D0-9953-00C04FD919C1}]
    "LocalService"="IISADMIN"

    [HKEY_CLASSES_ROOT\ClsID\{9F0BD3A0-EC01-11D0-A6A0-00A0C922E752}]
    "LocalService"="IISADMIN"

    [HKEY_CLASSES_ROOT\ClsID\{A9E69610-B80D-11D0-B9B9-00A0C922E750}]
    "LocalService"="IISADMIN"


    [-HKEY_CLASSES_ROOT\ClsID\{61738644-F196-11D0-9953-00C04FD919C1}\LocalServer32]


    [-HKEY_CLASSES_ROOT\ClsID\{9F0BD3A0-EC01-11D0-A6A0-00A0C922E752}\LocalServer32]


    [-HKEY_CLASSES_ROOT\ClsID\{A9E69610-B80D-11D0-B9B9-00A0C922E750}\LocalServer32]

    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\IISADMIN]
    "Start"=dword:3

    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSDTC]
    "Start"=dword:2

    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W3SVC]
    "Start"=dword:2

    8、C++builder上的设置:

    a)在你的ISAPI DLL 项目中,打开project->Options.页面,"Directories/Conditionals" 分页上,设置"Output directory" 为 "C:\Inetpub\Scripts"或者你的ISAPI DLL 放置的页面。打开所有Debug Information( Complier 分页上点 “Full debug ”按钮)。

    b)打开Run->Parameters 页面,设置Host Application 为 "c:\winnt\system32\inetsrv\inetinfo.exe" 或者其他你的IIS的安装目录。 设置Parameters 为"-e w3svc" (不包含双引号)

    c)现在你就可以开始正式调试,设置断点,运行程序,然后通过浏览器访问触发,程序就会停在断点处。就像调试一般的应用程序一样。

    d)你可以按Ctrl-F2 停止web 服务和调试进程。

    在delephi中的调试与c++builder 中几乎完全一样。

    [文章结束]




  • 相关文章

    相关软件