我的代码使用了大量的WCF调用,当我尝试调试它时,它不会转到服务代码本身。有办法以某种方式调试WCF代码吗?
答案 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服务代码,您需要将Visual Studio调试器附加到托管服务的进程并在代码中设置断点。
注意:Visual Studio可以同时附加到多个进程,因此您可以在同一会话中调试客户端和服务器代码。使用
答案 6 :(得分:0)