如何调试WCF程序

22

我的代码使用了许多WCF调用,但当我尝试进行调试时,它并没有进入服务代码本身。有没有什么办法可以在某种程度上调试WCF代码呢?


你是如何运行WCF服务的?在IIS内部还是作为独立应用程序? - Jonathan Allen
7个回答

27

有一种更简单的方法。只需在Visual Studio中启动多个进程。右键单击 Solution。点击属性。选择启动项目。点击多个启动项目。将 WCF 和 Client 项目设置为 Action = Start。现在,您将逐步执行 WCF 和客户端。


21
您需要将调试器附加到运行WCF服务的进程中。
在IIS中,您需要附加到相应的w3p.exe进程。
如果是独立应用程序或Windows服务,则需要附加到您的exe名称。
在Visual Studio中,在调试器菜单上,有一个“附加到进程”选项。打开相关代码,设置断点,并调用导致该代码路径执行的服务。
在调试之外,使用带有可切换级别的.NET跟踪是获取洞察力的好方法。我通常设置Sysinternals DebugView以突出显示错误和警告,并不断运行它,同时运行代码或测试。视野范围内的彩色线条可以找出问题。

在我的电脑上,那是w3wp.exe。 - Boiethios

17
如果您想追踪WCF活动以查看流量是否按正确顺序生成,那么我建议采用以下方法之一:
1)使用fiddler监视WCF流量。
2)使用WCF跟踪侦听器监视实际的WCF调用。当尝试确定序列化失败的原因时,这非常有帮助。您可以通过向web.config的configuration块添加以下块来启用此功能:
<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 服务日志查看器,该工具将为您分析文件并允许您深入了解特定调用并查看实际发生的异常。

1
这对我的情况非常有帮助。非常感谢! - LoBo

6
要在Visual Studio 2010中调试WCF服务,请转到“调试”->“附加到进程”。勾选“显示所有用户的进程”,如果使用IIS,则选择w3p.exe,否则选择应用程序名称。设置断点,进行调用,然后开始调试。
如果是Web应用程序(推荐使用),您可以右键单击项目,转到Web选项卡,在“启动操作”下选择“不打开页面,等待外部应用程序的请求”。保存并关闭此设置,然后按F5开始调试。

网站应用程序调试为我节省了大量时间! - Sigh-AniDe
将启动操作设置为“不打开页面,等待外部应用程序的请求”使我能够附加调试器到我的iis进程并触发断点...我很困惑为什么它突然起作用了,这与彼此无关。 - Alexander Derck

2

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


0
在我的情况下,我将 WCF 站点设置为 Visual Studio 中的“启动项目”,并直接在调试模式下运行 WCF。
Visual Studio 解决方案资源管理器中的 WCF 项目如下:

enter image description here

在WCF启动后,浏览器会显示一个新的网页,其URL类似于http://xxxx:xxport/Service.svc,复制此URI并在调用此WCF的其他程序中使用。

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


0

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

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

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

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

  • 工具->附加到进程

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接