2012-01-03 207 views
0

我在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的符號文件也沒有區別。
雖然代碼肯定執行。

+1

它所指的符號是一個符號數據庫,它是在Visual Studio的「調試」配置中構建應用程序時創建的。文件擴展名是.pdb,確保調試器可用。 – jlafay 2012-01-03 22:17:05

回答

1

問題是.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. 

在此過程中,它固定在調試問題!

2

在發生異常之前添加Debugger.Break()幾行。這應該給你一個彈出窗口要求附加一個調試器。

+0

感謝您的幫助。它按你說的那樣做,但我仍然無法調試。 – 2012-01-03 22:13:38

+0

查看我的編輯更多細節 – 2012-01-05 01:16:04