在本地IIS中托管的调试WCF服务无法正常工作

时间:2010-10-06 19:12:25

标签: wcf web-services debugging

我有一个解决方案WCFSampleSolution,它有我的所有项目 - Web服务,客户端和网站。结构类似于:

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

我为我的服务创建了WCFService项目。它包含IService1.cs和Service1.cs。然后我在IIS中托管了该服务。我这样做是通过创建一个网站并将.svc和web.config文件添加到网站项目中。然后在IIS中发布它。当我运行http:\ MyMachineName \ Website \ Service.svc时,它会显示服务描述。然后我创建调用webservice的Web客户端。我使用服务引用来添加服务。它调用Service1的方法。它工作正常。但我无法调试此程序/设置。我验证了WCFWebClient项目和网站项目中的配置文件,他们有适当的调试设置。

<compilation debug="true">

我提出了断点,但控制权从未进入我的seb服务。我也试过附加过程,但它也行不通。但我能够调试其他一个WCF项目。设置略有不同。在那个项目中,我在我的Web客户端中复制了.svc文件和配置,调试工作正常。

请帮助!!

3 个答案:

答案 0 :(得分:9)

您正在IIS上托管您的服务,因此我确信您必须附加到w3wp.exe进程。如果在Web服务器中构建的VS正在启动时尝试连接,那么也会附加到该进程。

答案 1 :(得分:4)

我觉得特别容易的是有两个visual studio实例打开(特别是如果你使用NUnit或做任何事情来测试代码)。一个将附加NUnit或任何你想要的,另一个将附加w3wp.exe进程。最简单的方法是:

1)在代码的visual studio的第一个实例中放置一个断点,然后它就会点击你机器上托管的WCF服务。

2)代码在断点处停止后,在Visual Studio的第二个实例中设置要断开的断点,然后附加w3wp.exe进程。

3)继续之后,应该点击服务代码的断点。

在附加w3wp.exe时,有时也更容易找到进程ID。使用IIS,您可以转到“工作进程”并找到要为应用程序池名称附加的进程ID。

答案 2 :(得分:1)

@ user465876 - 另一种不那么麻烦的方法可以在这里找到:WCF can no longer step into a service that's locally hosted -- why not?

相关问题