我有两个Visual Studio解决方案的源代码。一个是调用WCF服务的网站,另一个是编译成DLL的WCF服务。该网站将WCF服务的二进制DLL作为参考。
问题在于:当我运行网站时,一个未被捕获的异常从WCF服务升级。
如何在Visual Studio中运行WCF服务,以便在WCF服务中设置断点?服务项目设置为编译成DLL,我无法调试带有断点的DLL。在一次Visual Studio实例中“运行”服务并在另一个实例中运行网站时触发异常需要做什么?
这是我第一次接触WCF。
PS:我尝试将WCF服务的项目添加到网站的解决方案中,并因为WCF服务具有依赖关系而得到一些关于我将无法调试它的错误,因此看起来似乎没有选项。
答案 0 :(得分:5)
您可以使用WcfSvcHost.exe
托管服务并进行调试。您的服务如何托管?您还可以在运行时直接连接到主机进程,这可能是一个更好的解决方案,因为问题可能是环境问题。
答案 1 :(得分:3)
您的服务需要主机。在WCF中,您有两个选择:
或者正如安德鲁已经提到的 - 出于测试/调试的目的,使用通用的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
实例,在其中添加您的服务类,并打开主机 - 现在它已准备好接收来电。它还需要一些配置来了解如何以及在何处收听请求 - 但基本上就是这样。
马克