调试WCF服务库 - 如何“运行”它?
我有两个Visual Studio解决方案的源代码。一个是调用WCF服务的网站,另一个是编译为DLL的WCF服务。该网站有WCF服务的二进制DLL作为参考。调试WCF服务库 - 如何“运行”它?
问题出在这里:当我运行网站时,一个未捕获的异常从WCF服务开始。
如何在Visual Studio中运行WCF服务,以便我可以在WCF服务中设置断点?服务项目设置为编译成DLL,我无法调试带断点的DLL。在Visual Studio的一次实例中“运行”服务并在另一个实例中触发运行该网站的异常时需要做些什么?
这是我第一次接触到WCF。
PS:我试着将WCF服务的项目添加到网站的解决方案中,并得到一些关于如何因为WCF服务具有依赖关系而无法调试它的错误,所以看起来并不像选项。
您需要一个主机为您服务。在WCF中,你有两个选择:
- 主机在IIS/WAS(对于IIS6,只适用于HTTP绑定; IIS7/WAS支持所有绑定)
- 自托管在一个控制台应用程序,Winforms应用程序,NT服务
或者正如Andrew已经提到的 - 为了测试/调试目的,使用通用的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
实例,在其中添加您的服务类,并打开主机 - 现在它已准备好接收来电。它也需要一些配置,以了解如何以及在哪里倾听请求 - 但基本上是这样。
Marc
我为此+1了,因为WcfServiceHost不适用于每个绑定。 IE wsDualHttpBinding – 2013-09-13 22:40:50
我试图自己托管我的wcf服务库,它在我运行在发行版中时超时,但在调试任何想法可能是什么原因呢? – ZoomVirus 2014-10-08 09:19:36
+1有点不为人所知,而且经常被忽略的宝石,的确如此! – 2009-11-04 05:52:48