WCF 调试的限制

本主题适用于:

版本

Visual Basic

C#

F#

C++

Web Developer

学习版

主题不适用 主题不适用 主题不适用 主题不适用 主题适用

专业版、高级专业版和旗舰版

主题适用 主题适用 主题不适用 主题不适用 主题适用

开始 WCF 服务调试有三种方式:

  • 调试调用服务的客户端进程。 调试器将单步执行该服务。 该服务不必与客户端应用程序处于同一个解决方案中。

  • 调试请求服务的客户端进程。 该服务必须是解决方案的一部分。

  • 使用**“附加到进程”**附加到当前正在运行的服务。 调试将在该服务内部开始。

本主题描述了这些方案的限制。

单步执行服务的限制

若要从要调试的客户端应用程序单步执行服务,必须满足下列条件:

  • 客户端必须使用同步客户端对象调用服务。

  • 协定操作不能是单向的。

  • 如果服务器是异步的,则无法在服务内部执行代码时查看完整的调用堆栈。

  • 调试必须用 app.config 或 Web.config 文件中的以下代码启用:

    <system.web>
      <compilation debug="true" />
    </system.web>
    

    此代码只需添加一次。 您可以通过编辑 .config 文件或使用**“附加到进程”将代码附加到服务中来添加此代码。 在对服务应用“附加到进程”**时,调试代码将自动添加到 .config 文件中。 随后,您可以调试并单步执行该服务,而无需编辑 .config 文件。

跳出服务的限制

跳出服务并返回到客户端与单步执行服务具有相同的限制(如上所述)。 另外,调试器必须附加到客户端上。 如果要调试客户端并单步执行服务,调试器将继续附加到服务中。 无论使用**“启动调试”启动客户端,还是使用“附加到进程”将调试器附加到客户端,情况都是如此。 如果调试是通过附加到服务开始的,则说明尚未将调试器附加到客户端。 在这种情况下,如果需要跳出服务并返回到客户端,必须先使用“附加到进程”**手动附加到客户端。

自动附加到服务的限制

自动附加到服务具有下列限制:

  • 该服务必须是要调试的 Visual Studio 解决方案的一部分。

  • 该服务必须进行托管。 它可以是网站项目(文件系统和 HTTP)、Web 应用程序项目(文件系统和 HTTP)或 WCF 服务库项目的一部分。 WCF 服务库项目可以是服务库或工作流服务库。

  • 该服务必须从 WCF 客户端调用。

  • 调试必须用 app.config 或 Web.config 文件中的以下代码启用:

    <system.web>
      <compilation debug="true" />
    <system.web>
    

自我承载

“自我托管服务”是指不在 IIS、WCF 服务主机或 ASP.NET 开发服务器内部运行的 WCF 服务。 有关如何调试自我托管的服务的信息,请参见如何:调试自我托管的 WCF 服务

自我承载

若要启用的 ASP.NET 3.0 或 3.5 应用程序的调试,ASP.NET 3.0 或 3.5 必需在安装 Visual Studio 2010 之前安装。 如果在安装 ASP.NET 3.0 或 3.5 之前安装了 Visual Studio 2010,则在尝试调试 ASP.NET 3.0 或 3.5 应用程序时,就会出错。 错误信息为:无法自动单步执行服务器。若要修复此问题,请使用 Windows 中的**“控制面板”“程序和功能”**来修复 Visual Studio 2010 安装。

请参见

任务

如何:调试自我托管的 WCF 服务

其他资源

调试 WCF 服务