如何调试WCF程序

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

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

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

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

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

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

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

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

1)使用fiddler观察WCF流量。

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

         

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

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

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

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

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

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

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

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

  • 工具 – >附加到流程

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

Visual Studio解决方案资源管理器中的WCF项目如下:

在此处输入图像描述

在WCF启动之后,浏览器中会出现一个新的网页,其url将为http://xxxx:xxport/Service.svc ,复制此uri并在调用此WCF的其他程序中使用它,

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