如何调试WCF程序

问题描述:

我的代码使用大量的WCF调用,当我尝试调试它时,它不会转到服务代码本身。有没有办法以某种方式调试WCF代码?如何调试WCF程序

+0

如何运行WCF服务?在IIS内部还是作为独立应用程序? – 2012-01-06 02:39:08

您需要将调试器附加到您的WCF服务中运行的进程。

如果在IIS你需要连接到相应的w3p.exe过程。

如果在一个独立的应用程序或Windows服务,附加到您的EXE的名称。

在Visual Studio中,在调试器菜单上有一个“附加到进程”。打开相关的代码,设置一个断点,然后调用导致该代码路径执行的服务。

在调试之外,使用可切换级别的.net跟踪是了解正在发生的事情的好方法。我通常将sys内部的debugview设置为颜色突出显示错误和警告,并在运行代码或测试时不断运行它。在工作中,我的周围视觉中出现彩色线条,这些线条会发现问题

附加到服务本身,而不是调用它的代码。

要在visual studio 2010中调试WCF服务,请转到Debug - > Attach to Process。选中“显示所有用户的进程”,如果使用的是IIS,则选择w3p.exe,否则选择应用程序的名称。放入一个断点,进行调用,然后可以开始调试。

如果它是一个web应用程序(我建议这样做),您可以右键单击该项目,转到Web选项卡,然后在开始操作下选择“不要打开页面,等待来自外部的请求应用”。保存并关闭此设置,然后按F5开始调试。

+0

Web应用程序调试为我节省了大量时间! – 2017-03-01 08:35:36

如果您正在寻找跟踪的WCF活动,看是否以正确的顺序产生的流量,那么我会推荐以下方法之一:

1)使用fiddler观看WCF流量。

2)使用WCF跟踪侦听器来监视实际的WCF调用。这在尝试确定序列化失败的原因时非常有用。您可以通过添加以下块你的web.config的配置块启用此:

上生成的文件将打开WCF服务日志查看器,这将分析该文件为你,让你
<system.diagnostics> 
    <sources> 
     <source name="System.ServiceModel" 
       switchValue="Information, ActivityTracing" 
       propagateActivity="true"> 
     <listeners> 
      <add name="traceListener" 
       type="System.Diagnostics.XmlWriterTraceListener" 
       initializeData="c:\log\WebTrace.svclog" /> 
     </listeners> 
     </source> 
    </sources> 
    </system.diagnostics> 

双击钻入特定的调用并查看发生的实际异常。

+1

这对我来说**非常有用。非常感谢! – LoBo 2013-02-15 11:15:11

当运行一个访问WCF应用服务有经常参与

  • 客户端程序两个过程被访问WCF服务
  • 服务器的过程,承载WCF服务

这听起来像你正在调试客户端进程。为了逐步执行实际的WCF服务代码,您需要将Visual Studio调试器附加到托管服务的进程,并在代码中设置断点。

注意:Visual Studio可以同时附加到多个进程,因此您可以在同一会话中调试客户端和服务器代码。使用

  • 工具 - >附加到进程

有一个更简单的方法。只需在Visual Studio中启动多个进程。右键点击解决方案。点击属性。选择启动项目。点击多个启动项目。将WCF和客户端项目设置为Action = Start。现在您将逐步浏览WCF以及客户端。

+0

这可能应该被选作正确答案 – Sergei 2016-03-27 13:44:31

在我的情况,我在Visual Studio中设置的WCF网站为StartUp Project并直接在调试模式下运行的WCF,

在Visual Studio Solution Explorer中的WCF产品,如:

enter image description here

WCF开始后,有会在浏览器中的新网页显示,其网址会喜欢http://xxxx:xxport/Service.svc,复制此URI和谁调用这个WCF其它程序使用它,

然后在程序调用的方法中设置断点,程序执行时将成功输入断点。