调试WCF服务库 - 如何“运行”它?

时间:2009-11-04 03:01:05

标签: .net wcf debugging

我有两个Visual Studio解决方案的源代码。一个是调用WCF服务的网站,另一个是编译成DLL的WCF服务。该网站将WCF服务的二进制DLL作为参考。

问题在于:当我运行网站时,一个未被捕获的异常从WCF服务升级。

如何在Visual Studio中运行WCF服务,以便在WCF服务中设置断点?服务项目设置为编译成DLL,我无法调试带有断点的DLL。在一次Visual Studio实例中“运行”服务并在另一个实例中运行网站时触发异常需要做什么?

这是我第一次接触WCF。

PS:我尝试将WCF服务的项目添加到网站的解决方案中,并因为WCF服务具有依赖关系而得到一些关于我将无法调试它的错误,因此看起来似乎没有选项。

2 个答案:

答案 0 :(得分:5)

您可以使用WcfSvcHost.exe托管服务并进行调试。您的服务如何托管?您还可以在运行时直接连接到主机进程,这可能是一个更好的解决方案,因为问题可能是环境问题。

答案 1 :(得分:3)

您的服务需要主机。在WCF中,您有两个选择:

    IIS / WAS中的
  • 主机(对于IIS6,仅适用于HTTP绑定; IIS7 / WAS支持所有绑定)
  • 在控制台应用程序中自托管,Winforms app,NT Service

或者正如安德鲁已经提到的 - 出于测试/调试的目的,使用通用的WcfSvcHost.exe应用程序,它基本上在控制台应用程序中进行自托管。

如果您想拥有自己的小主机,可以将项目添加到解决方案中,将其设置为“Windows控制台应用程序”,添加对服务库项目的引用,然后基本上拥有以下代码:

    static void Main(string[] args)
    {
        using (ServiceHost host = new ServiceHost(typeof(YourWCFService)))
        {
            host.Open();
            Console.WriteLine("Service host running......");

            Console.ReadLine();

            host.Close();
        }
    }

这将创建一个ServiceHost实例,在其中添加您的服务类,并打开主机 - 现在它已准备好接收来电。它还需要一些配置来了解如何以及在何处收听请求 - 但基本上就是这样。

马克