使用单个控制台应用程序托管两个WCF服务

我试图使用一个控制台应用程序托管两个服务。 但是,当我尝试这样做时,只有一个服务被托管,而另一个服务没有。

Program.cs中:

namespace WWWCFHost { class Program { static void Main(string[] args) { using (ServiceHost host = new ServiceHost(typeof(WWWCF.Login))) { host.Open(); Console.WriteLine("Service1 Started"); } using (ServiceHost host1 = new ServiceHost(typeof(WWWCF.UserRegistration))) { host1.Open(); Console.WriteLine("Service2 Started"); Console.ReadLine(); } } } } 

App.config中

                                          

在上面的代码中,我试图在端口8080上托管一个服务,而另一个在端口8090上托管。当我运行应用程序时,第一个服务启动然后自动关闭,第二个服务仍然启动。 如何同时托管这两项服务?

我已经浏览了这个链接: 两个WCF服务,托管在一个控制台应用程序中

我也经历过其他线索。但他们没有解决我的问题。

如果需要,将很乐意提供任何进一步的细节。

您的第一个服务跳出using块,因此处置太早。 试试这个…

 using (ServiceHost host = new ServiceHost(typeof(WWWCF.Login))) using (ServiceHost host1 = new ServiceHost(typeof(WWWCF.UserRegistration))) { host.Open(); Console.WriteLine("Service1 Started"); host1.Open(); Console.WriteLine("Service2 Started"); Console.ReadLine(); } 

看看这个: http : //msdn.microsoft.com/en-us//library/yh598w02.aspx

你正在关闭第一个,因为它正在使用中。 您需要对其进行设置,以便在ReadLine()调用之后,第一个使用范围不会结束。

尝试:

 using (ServiceHost host = new ServiceHost(typeof(WWWCF.Login))) { host.Open(); Console.WriteLine("Service1 Started"); using (ServiceHost host1 = new ServiceHost(typeof(WWWCF.UserRegistration))) { host1.Open(); Console.WriteLine("Service2 Started"); Console.ReadLine(); } }