У меня есть приложение WCF, в котором есть две службы, которые я пытаюсь разместить в одной службе Windows, используя net.tcp. Я могу нормально запустить любую из служб, но как только я пытаюсь поместить их в службу Windows, загружается только первая из них. Я определил, что вызывается второй сервисный ctor, но OnStart никогда не срабатывает. Это говорит мне о том, что WCF обнаруживает что-то не так при загрузке этой второй службы.
Используя net.tcp, я знаю, что мне нужно включить общий доступ к портам и запустить службу общего доступа к портам на сервере. Кажется, все это работает правильно. Я пытался разместить сервисы на разных портах tcp, но все еще безуспешно.
Мой класс установщика службы выглядит следующим образом:
[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 });
}
}
и обе службы выглядят очень похоже
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();
}
}