我在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的符號文件也沒有區別。
雖然代碼肯定執行。
它所指的符號是一個符號數據庫,它是在Visual Studio的「調試」配置中構建應用程序時創建的。文件擴展名是.pdb,確保調試器可用。 – jlafay 2012-01-03 22:17:05