【问题标题】:How to debug WCF programs如何调试 WCF 程序
【发布时间】:2012-01-06 02:35:34
【问题描述】:

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

【问题讨论】:

  • 你是如何运行 WCF 服务的?在 IIS 内部还是作为独立应用程序?

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


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

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

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

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

    【讨论】:

    • 在我的电脑里,就是 w3wp.exe
    【解决方案3】:

    如果您希望跟踪 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 服务日志查看器,它将为您分析文件并允许您深入了解特定调用并查看发生的实际异常。

    【讨论】:

    • 这对我来说非常很有帮助。非常感谢!
    【解决方案4】:

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

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

    【讨论】:

    • Web 应用程序调试为我节省了大量时间!
    • 将启动操作设置为“不要打开页面,等待来自外部应用程序的请求”使我可以将调试器附加到我的 iis 进程并点击断点...我很困惑为什么它突然起作用,这与彼此无关 afaik
    【解决方案5】:

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

    【讨论】:

      【解决方案6】:

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

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

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

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

      • 工具 -> 附加到进程

      【讨论】:

        【解决方案7】:

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

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

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

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

        【讨论】:

          猜你喜欢
          • 2013-11-11
          • 1970-01-01
          • 1970-01-01
          • 2011-02-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-04-03
          • 1970-01-01
          相关资源
          最近更新 更多