如何调试WCF程序

Val*_*Val 20 .net c# debugging wcf visual-studio-2010

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

bry*_*mac 20

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

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

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

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

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


小智 20

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

  • 这可能应该被选择为正确的答案 (2认同)

com*_*ech 14

如果您希望跟踪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>
Run Code Online (Sandbox Code Playgroud)

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


Roc*_*lan 6

要在 Visual Studio 2010 中调试 WCF 服务,请转到调试 -> 附加到进程。选中“显示所有用户的进程”,如果您使用的是 IIS,则选择 w3p.exe,否则选择应用程序的名称。设置一个断点,进行调用,然后就可以开始调试了。

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