Visual Studio   用 IIS 4.0 或更高版本调试请参见
调试 ISAPI 应用程序 | 调试 Visual C++
使用 IIS 4.0 或更新版本时,有几种方法可以为调试服务器组件和 Internet 服务扩展 DLL 建立环境。以下几节对这些过程进行了描述: 能够附加到 Windows NT 进程的调试器 
不能附加到 Windows NT 进程的调试器 
在组件的源代码中设置断点 
建立 Windows NT 安全特权和调试 IIS 4.0 DLL 
能够附加到 Windows NT 进程的调试器
如果要使用能够附加到 Windows NT 进程的调试器,可以使用该功能调试您的组件或扩展。用 Visual Studio 调试 IIS 4.0 或更高版本的 DLL 启动 iisadmin 进程。方法是从命令行使用命令 net start iisadmin。还可以从“控制面板”使用“服务”对话框来启动“IIS 管理服务”,这将启动 iisadmin。 
在 Visual Studio 中,从“调试”菜单中选择“进程”。 
在“进程”对话框中,选择“显示系统进程”复选框。 
在“可用进程”框中,选择“inetinfo”进程。 
单击“附加”按钮。 
在“附加到进程”对话框中,确保选择“选择要调试的程序类型”下的“本机”。 
启动“万维网发布服务”(w3svc)。可以从命令提示处使用命令 net start w3svc 完成该操作,或使用“服务”控制面板完成该操作: 
从“开始”菜单中,单击“设置”并选择“控制面板”。 
在“控制面板”中双击“管理工具”。 
在“管理工具”窗口中双击“服务”。 
在“服务”对话框中,右击“万维网发布服务”,然后从快捷菜单中选择“启动”。 
不能附加到 Windows NT 进程的调试器
如果要使用不能附加到 Windows NT 进程的非 Visual Studio 调试器,请采取以下步骤建立适当的调试环境。用非 Visual Studio 调试器调试 IIS 4.0 或更高版本的 DLL 在“控制面板”中,打开“服务”。 
选择“IIS 管理服务”并单击“启动”按钮。 
选择“允许服务与桌面交互”复选框,然后单击“确定”。 
为在“IIS 管理服务”进程下运行的所有进程(例如“万维网发布服务”和“FTP 发布服务”)重复第 2、3 步。 
使用注册表编辑器 (REGEDIT) 将一个名为 Inetinfo.Exe 的子项添加到 HKEY_LOCAL_MACHINE\Software\Microsoft\WindowsNT\CurrentVersion\Image File Execution Options 项中。 
向此新键添加以下项: 
Debugger = <DebuggerExeName>,其中,DebuggerExeName 是所使用的调试器的完整路径。 当启动“万维网发布服务”时,也将启动您的调试器。现在可以在您的 Internet 服务器扩展 DLL 中设置适当的断点了。在组件的源代码中设置断点
根据所调试的语言,在将组件加载到内存中以前,可能不能在组件的源代码中设置断点。设置和触发断点 启动 Internet Explorer 并查看包含此对象的 .asp 页。 
该页一加载,您就能够在组件中设置断点了。 单击“刷新”以再次查看该页,并触发所选断点。 
如果组件一次都不能加载(例如组件启动代码中出现错误时的情况),则需要在启动调试会话以前加载组件 DLL(见下面的第 11-14 步)。 建立 Windows NT 安全特权和调试 IIS 4.0 DLL
在某些情况下,您可能无法使用上面概述的步骤。如果使用这些策略有困难,还有第三种方法,该方法已在 IIS 的以前版本中进行了描述。该方法要求建立 Windows NT 安全特权并且更改注册表。它还禁止您将 IIS 作为服务运行。该方法应只在前两种策略均失败时使用。建立 Windows NT 安全特权和调试 IIS 4.0 DLL 使用“域用户管理器”(USRMGR) 管理工具,在本地计算机上向调试 Internet 服务器扩展 DLL 时将使用的 Windows NT 帐户添加以下权限:“作为服务登录”、“充当操作系统的一部分”和“生成安全审计”权限。 
使用“分布式 COM 配置”实用工具 (DCOMCNFG) 将“IIS Admin Service”(IIS 管理服务)的标识更改为将用于调试的用户帐户。 
使用“注册表编辑器”(REGEDIT),从 HKEY_CLASSES_ROOT\AppID 下与 IISADMIN 有关的所有子项中移除 LocalService 关键字。该关键字可在下列子键中找到: 
{61738644-F196-11D0-9953-00C04FD919C1} // IIS WAMREG admin Service {9F0BD3A0-EC01-11D0-A6A0-00A0C922E752} // IIS Admin Crypto Extension {A9E69610-B80D-11D0-B9B9-00A0C922E750} // IISADMIN Service LocalService 关键字可在 AppID 的其他子键中找到。 将 LocalServer32 子项添加到注册表的 CLSID 节点下与 IISADMIN 有关的所有子项。这将包括与上一步中移除的所有子键相对应的子键。将这些新键的默认值设置为 <路径>\inetinfo.exe -e w3svc。(<路径> 通常是“c:\winnt\system32\inetsrv”。) 
从 Microsoft 管理控制台或从“控制面板”中的“服务”对话框停止 WWW 服务和 FTP 服务。 
在 Visual Studio 的“解决方案资源管理器”中选择项目。 
从“视图”菜单中选择“属性页”。 
在“属性页”对话框中的“配置属性”文件夹下选择“调试”页。 
在属性网格的“命令”字段中键入: 
C:\WINNT\System32\Inetsrv\Inetinfo.exe 在属性网格的“命令参数”字段中键入: 
-e w3svc 打开“链接器”文件夹。 
在“输出文件”字段中,键入要调试的 Internet 服务器扩展 DLL 的名称和路径。 
单击“确定”。 
若要开始调试,请从“调试”菜单中选择“启动”。 
注意   完成调试会话后,必须反向执行步骤 5 到步骤 1,以还原以前的设置并允许 IIS 作为服务运行。
请参见
调试 ISAPI 应用程序 | 调试 Visual C++--------------------------------------------------------------------------------向 Microsoft 发送有关此主题的反馈&copy; Microsoft Corporation。保留所有权利。