调试HTTP处理程序
我在2003年使用IIS 6.我创建了一个继承自IHttpAsyncHandler的HTTP处理程序dll。该DLL建立到inetpub \ www8080root \ common \ bin目录中。它意味着拦截所有请求。调试HTTP处理程序
该网站设置为监视端口8080.我已经在www8080root目录中创建了一个公用文件夹,并在II6中创建了一个虚拟目录指向它。 我创建公共目录中
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.web>
<compilation debug="true" defaultLanguage="c#" />
<httpHandlers>
<add verb="*" path="*"
type="x2Handler.x2Handler, x2Handler" />
</httpHandlers>
</system.web>
</configuration>
web.config文件当我访问http://localhost:8080/common/index.html的HTTP处理程序引起的w3wp.exe崩溃,当我看到在事件日志中我可以看到处理器中的错误造成了这次事故。当我在VS 2005中设置一个断点时,它不会受到影响。
为了进行调试,我需要以某种方式附加到在IIS下运行的进程,但一旦它处理请求,它就会崩溃。
如何在IIS下调试HTTP Handler DLL?我看不到一个aspnet_wp.exe进程附加到如下所述:C#, Debugging an HTTPHandler
编辑: 通过添加Debugger.Break()我现在收到消息“的w3wp.exe引发断点”,它可以让我选择一个调试环境,但它没有加载符号
No symbols are loaded for any call stack frame. The source code cannot be displayed.
我设置工具 - >选项 - > Debugging->启用仅我的代码 我将路径设置为通用/ bin中的位置,从加载的符号。任何手动设置断点仍然显示:
The breakpoint will not currently be hit. No symbols have been loaded for this document.
编辑: 当它加载它似乎是在寻找ntdll.pdb的符号。即使我手动加载httpHandler的符号文件也没有区别。
虽然代码肯定执行。
问题是.Net已经安装在版本IIS之前。我注意到“编辑配置”按钮被禁用,发现这个网站http://www.warfiblog.com/edit-configuration-disabled。 继说明:
You will need to go to Start -> Microsoft Visual Studio 2005 -> Visual Studio Tools -> Visual Studio 2005 Command Prompt. On the prompt write down this command:
aspnet_regiis -r
The above command will register dot net with IIS and now the button will also be enabled.
在此过程中,它固定在调试问题!
在发生异常之前添加Debugger.Break()
几行。这应该给你一个弹出窗口要求附加一个调试器。
感谢您的帮助。它按你说的那样做,但我仍然无法调试。 – 2012-01-03 22:13:38
查看我的编辑更多细节 – 2012-01-05 01:16:04
它所指的符号是一个符号数据库,它是在Visual Studio的“调试”配置中构建应用程序时创建的。文件扩展名是.pdb,确保调试器可用。 – jlafay 2012-01-03 22:17:05