如何调试WCF程序

时间:2012-01-06 02:35:34

标签: c# .net wcf visual-studio-2010 debugging

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

7 个答案:

答案 0 :(得分:19)

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

答案 1 :(得分:17)

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

如果在iis中你需要附加到相应的w3p.exe进程。

如果在独立应用或Windows服务中,请附加到您的exe的名称。

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

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

答案 2 :(得分:13)

如果您希望跟踪WCF活动以查看流量​​是否按正确顺序生成,那么我建议采用以下方法之一:

1)使用fiddler观看WCF流量。

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

<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>

双击生成的文件将打开WCF服务日志查看器,它将为您分析文件,并允许您深入查看特定调用并查看发生的实际异常。

答案 3 :(得分:4)

要在visual studio 2010中调试WCF服务,请转到Debug - &gt;附加到流程。选中“显示所有用户的进程”,如果使用的是IIS,则选择w3p.exe,否则选择应用程序的名称。放入断点,拨打电话,然后就可以开始调试了。

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

答案 4 :(得分:2)

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

答案 5 :(得分:0)

运行访问WCF服务的应用程序时,通常涉及两个过程

  • 正在访问WCF服务的客户端进程
  • 托管WCF服务的服务器进程

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

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

  • 工具 - &gt;附加到流程

答案 6 :(得分:0)

就我而言,我在Visual Studio中将WCF站点设置为StartUp Project,并在调试模式下直接运行WCF,

Visual Studio Solution Explorer中的WCF项目如下:

enter image description here

<> WCF启动后,将在浏览器中显示新的网页,其网址将为http://xxxx:xxport/Service.svc,复制此uri并将其用于调用此WCF的其他程序,

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