title: How to host 2 WCF services in 1 Windows Service?
body: <p>I have a WCF application that has two Services that I am trying to host in a single Windows Service using net.tcp. I can run either of the services just fine, but as soon as I try to put them both in the Windows Service only the first one loads up. I have determined that the second services ctor is being called but the OnStart never fires. This tells me that WCF is finding something wrong with loading up that second service.</p>
  
  <p>Using net.tcp I know I need to turn on port sharing and start the port sharing service on the server. This all seems to be working properly. I have tried putting the services on different tcp ports and still no success.</p>
  
  <p>My service installer class looks like this:</p>
  
  <pre><code> [RunInstaller(true)]
   public class ProjectInstaller : Installer
   {
        private ServiceProcessInstaller _process;
        private ServiceInstaller        _serviceAdmin;
        private ServiceInstaller        _servicePrint;
  
        public ProjectInstaller()
        {
              _process = new ServiceProcessInstaller();
              _process.Account = ServiceAccount.LocalSystem;
  
              _servicePrint = new ServiceInstaller();
              _servicePrint.ServiceName = "PrintingService";
              _servicePrint.StartType = ServiceStartMode.Automatic;
  
              _serviceAdmin = new ServiceInstaller();
              _serviceAdmin.ServiceName = "PrintingAdminService";
              _serviceAdmin.StartType = ServiceStartMode.Automatic;
  
              Installers.AddRange(new Installer[] { _process, _servicePrint, _serviceAdmin });
        }   
  }
  </code></pre>
  
  <p>and both services looking very similar</p>
  
  <pre><code> class PrintService : ServiceBase
   {
  
        public ServiceHost _host = null;
  
        public PrintService()
        {
              ServiceName = "PCTSPrintingService";
              CanStop = true;
              AutoLog = true;
  
        }
  
        protected override void OnStart(string[] args)
        {
              if (_host != null) _host.Close();
  
              _host = new ServiceHost(typeof(Printing.ServiceImplementation.PrintingService));
              _host.Faulted += host_Faulted;
  
              _host.Open();
        }
  }
  </code></pre>