Ich habe eine WCF-Anwendung, die zwei Dienste hat, die ich in einem einzigen Windows-Dienst mit net.tcp hosten möchte. Ich kann einen der Dienste problemlos ausführen, aber sobald ich versuche, beide in den Windows-Dienst zu stellen, wird nur der erste geladen. Ich habe festgestellt, dass der zweite Dienst ctor aufgerufen wird, aber der OnStart wird nie ausgelöst. Das zeigt mir, dass WCF etwas falsch mit dem Laden dieses zweiten Dienstes findet.Wie 2 WCF-Dienste in 1 Windows-Dienst hosten?
Mit net.tcp Ich weiß, ich muss Port-Sharing aktivieren und den Port-Sharing-Dienst auf dem Server starten. Das scheint alles richtig zu funktionieren. Ich habe versucht, die Dienste auf verschiedenen TCP-Ports und immer noch keinen Erfolg.
Mein Service Installer-Klasse sieht wie folgt aus:
[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 });
}
}
und beide Dienste suchen sehr ähnlich
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();
}
}
Das funktioniert! Ganz im Gegensatz zu ServiceBase.Run (ServiceBase []), wie die Microsoft-Vorlage impliziert, würde funktionieren ... Danke, du hast gerade meinen Tag gerettet! – DaveN59