2010-10-06 58 views
7

我有一個解決方案WCFSampleSolution,它具有我所有的項目 - Web服務,客戶端和網站。該結構是這樣的:在本地IIS中託管的調試WCF服務不起作用

  • WCFSampleSolution
    • C:\ WCFSample \網站
    • WCFService
    • WCFWebClient

我創建WCFService項目爲我服務。它包含IService1.cs和Service1.cs。然後我在IIS中託管服務。我通過創建一個網站並將.svc和web.config文件添加到網站項目中來實現此目的。然後在IIS中發佈它。當我運行http:\ MyMachineName \ Website \ Service.svc時,它顯示服務描述。然後我創建了調用web服務的Web客戶端。我使用服務引用來添加服務。它調用Service1的方法。它工作正常。但我不能調試這個程序/設置。我驗證了WCFWebClient項目和Website項目中的配置文件,並且它們具有適當的調試設置。

<compilation debug="true"> 

我把斷點,但控制永遠不會去我的seb服務。我也嘗試過附加程序,但它也不起作用。但我能夠調試我的其他WCF項目之一。設置有點不同。在該項目中,我複製了.svc文件並在我的Web客戶端中進行了配置,調試工作正常。

請幫助!

回答

9

您正在IIS上託管您的服務,因此我確信您必須連接到w3wp.exe進程。當試圖連接如果VS內置Web服務器啓動,然後附加到該進程。

+0

Pradeep,非常感謝回覆。我不知道如何附加到w3wp?我所做的是,打開VS 2008,然後選擇Tools-> Attach to Process並選擇aspnet_wp.exe。我確信我做得不對,因爲在我附加之後,我無法對VS做任何事情。你能指導我怎麼做嗎?還有最後一行是什麼意思? – 2010-10-06 20:27:16

+0

aspnet_wp.exe是附加的正確過程。我想你是在Windows XP機器上。你正在採取正確的步驟。我已經看到即使服務託管在IIS中的行爲,VS啓動其構建的Web服務器「WebDev.WebServer40.exe」(我在VS 2010中看到這個名稱)。您還需要將其附加到aspnet_wp.exe的一側。你還可以分享你的代碼庫,以便我也可以看看。 – Pradeep 2010-10-07 04:37:06

+2

謝謝Pradeep,我無法調試。我在這裏錯過的是,我需要做的工作之一是:我將其放在這裏供其他人使用:1.在調用Web服務方法之前以及服務方法(重要)之前在客戶端放置斷點。 2.運行應用程序。 3.當控制位於客戶端中斷點時,打開Debug-> Attach to Process並選擇aspnet_wp.exe。 4.立即開始調試。瞧! – 2010-10-07 15:36:33

4

我發現了什麼特別容易被具有視覺工作室的兩個實例開放(特別是如果你使用NUnit或做任何事情來測試碼)。一個將附加NUnit或任何你想要的,另一個將附加w3wp.exe進程。最簡單的方法是:

1)在代碼的visual studio的第1個實例中放置一個斷點,然後它將打擊您的機器上託管的WCF服務。

2)一旦代碼停在斷點處,在您想要破解的第二個Visual Studio實例中設置斷點,然後附加w3wp.exe進程。

3)一旦你繼續,服務代碼的斷點應該被打。

當連接w3wp.exe時,有時候更容易找到進程ID。使用IIS,您可以轉到「工作進程」並找到要爲您的應用程序池名稱附加的進程ID。