轻松调试isapi (环境IIS6.0 WIN2K3 VS2003)

王朝system·作者佚名  2006-01-09
宽屏版  字体: |||超大  

最近有需要要调试一个ISAPI DLL,在网上查了点资料如:

how to debug ISAPI DLLs in IIS 4.0, IIS 5.0, IIS 5.1, and IIS 6.0How to debug ISAPI DLLs in IIS 4.0, IIS 5.0, IIS 5.1, and IIS 6.0) 地址在:

http://support.microsoft.com/kb/183480/EN-US/#3但按照文章的步骤设置后仍然不对,于是自己按照想法进行了设置,思路很简单,就是DLL是依存在IIS的那个进程中运行?然后对进程进行调试.那么首先要知道DLL依存的进程,下表显示了关于最近IIS版本的进程模型.

IIS5.0

平台体系结构:Windows 2000

应用程序进程模型:TCP/IP 内核

DLLhost.exe(处于中等或高应用程序隔离模式下的多个 DLL 主机)

IIS5.1

平台体系结构:Windows XP Professional

应用程序进程模型:TCP/IP 内核

DLLhost.exe(处于中等或高应用程序隔离模式下的多个 DLL 主机)

IIS6.0

平台体系结构:Windows Server 2003 家族

应用程序进程模型:HTTP.sys 内核

当 IIS 以 IIS 5.0 隔离模式运行时:Inetinfo.exe(对于进程内应用程序)或 DLLhost.exe(对于进程外应用程序)当 IIS 以工作进程隔离模式运行时:W3wp.exe(多工作进程)

(摘自IIS帮助文档,对IIS内核感兴趣的朋友可以继续深入研究一下哟.只是记得把成果共享一下呀.)

根据上表IIS6.0可以运行于两种模式下,那么如何知道到底现在运行的是那种模式呢?很简单打开IIS管理器看一眼如果存在“应用程序池”文件夹,则为工作进程隔离模式;如果不存在“应用程序池”文件夹,则为 IIS 5.0 隔离模式。

根据我的IIS管理器里有"应用程序池"文件夹,得到我的IIS运行于工作进程隔离模式,推出ISAPI DLL依附于W3WP.EXE进程.

好了,现在来试一次,(确定IIS已经启动了,以管理员角色登录,)

一:创建虚拟目录

二:在虚拟目录中用VS2003创建一个扩展ISAPI DLL(MFC)项目

三:生成该项目.

四:在Default(CHttpServerContext* pCtxt)函数第一行设个断点.

五:在点击调试菜单->进程,在进程窗口中点击显示系统进程找到我们的W3WP.EXE点击附加.在弹出的附加到进程的对话窗中选择Native单击确定,关闭进程窗口,好了调试环境以创建好,就等你触发了.

六:打开IE浏览器,浏览你的ISAPI DLL,如:HTTP://LocalHost/MyWeb/MyIsapi/debug/MyIsapi.dll 回车,是不是停在了VS2003代码中的断点处了哟(连IIS服务的停止启动都不需要).然后就开始调吧. GOOD LUCK!

其它的环境我没试过, 不过我想根据以上思路应该也可以吧.

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有