c# - 调试 WCF 服务

标签 c# .net wcf visual-studio-2010 soa

所以我们在 SOA 架构中运行。我有一项服务,我正在尝试将其调试到来自不同解决方案中的 WinForms 应用程序的调用中。

在这个 winforms 应用程序中,我已经在 app.config 中正确引用了本地主机上的服务,现在我想启动一个 WCF 服务实例,这样我就可以设置一个断点并单步执行它。

当我进入服务时,我右键单击该项目,转到属性,然后在“开始操作”下,我选择服务 bin/debug/目录中的 .exe 文件。然后我保存、编译并按 F5 启动它的一个实例。我收到此错误:

enter image description here

我应该做什么?

最佳答案

您必须在一个进程中托管该服务,然后从那里对其进行调试。这可以像编写控制台应用程序来托管服务一样简单,或者编写 Windows 服务来托管服务,或者 Windows 窗体应用程序,或者在 IIS 中托管它。

您可以像这样在控制台应用程序中托管:

static void Main(string[] args)
{
  using (ServiceHost host = new ServiceHost(typeof(YourNamespace.YourServiceInterface)))
  {
    host.AddServiceEndpoint(typeof(
YourNamespace.YourServiceInterface), new NetTcpBinding(), "net.tcp://localhost:9000/YourService");
    host.Open();

    Console.WriteLine("Press <Enter> to terminate the Host 
application.");
    Console.WriteLine();
    Console.ReadLine();
  }
}

this article显示如何在 Windows 服务中托管。我建议添加

Debugger.Launch();

作为 OnStart 方法的第一行,以便您可以在服务启动时附加调试器。这将有助于调试任何启动问题。否则,您只需从调试菜单中选择 AttachToProcess 并附加到正在运行的 Windows 服务。

您需要添加using System.Diagnostics 以使用Debugger.Launch(); 方法

关于c# - 调试 WCF 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6874539/

相关文章:

WCF DataContract - 标记成员 IsRequired=false

performance - WCF Windows 服务使用 100% cpu

WCF REST 错误 HTTP 307

c# - 在 Entity Framework Code First 中为关联实体的数量添加一个属性

c# - 转换不断出现错误

c# - ebay API - 从拍卖列表中获取 UPC

c# - 使用 LINQ 在列表的列表中选择不同的属性

c# - 在 LINQ 中检查年龄过滤器的最短方法?

C# PrintDocument 打印空白页。为什么?

c# - 如何提高该算法的性能?