2011-01-13 4 views
1

Ich muss viele Windows-Dienste erstellen, um viele WCF-Dienst zu hosten, so dass ich einen einzigen stoppen (zum Beispiel um es zu aktualisieren) und den anderen laufen lassen kann.C# registrieren den gleichen Windows-Dienst mit verschiedenen Parametern

Da ich keinen Windows-Dienst für jeden WCF-Dienst erstellen möchte, versuche ich eine C# -Anwendung zu erstellen, die sich als Windows-Dienst registrieren kann, aber mit anderen Parametern (und natürlich dem Dienstnamen). .

Zum Beispiel es auf diese Weise aufrufen:

MyService.exe /install WcfService1.dll 
MyService.exe /install WcfService2.dll 

Dies schafft zwei verschiedene Windows-Dienst wie diese:

WcfService1 -> MyService.exe /run WcfService1.dll 
WcfService2 -> MyService.exe /run WcfService2.dll 

ich keine Möglichkeit, diese anderen zu tun finden können direkt die Registrierung als Bearbeitung .

+0

Ich kann der Frage nicht folgen, da es mir nicht klar ist, was dein Problem ist. Als ich deine Frage gelesen habe, hast du schon eine Lösung! –

+0

Entschuldigung dafür, dass ich nicht klar bin: Mein Problem ist, dass ich keinen Weg finden kann, um einen Windows-Dienst mit Parametern hinzuzufügen. C# – Keeper

Antwort

3

Ich habe einen schöneren Weg gefunden, es zu tun: sc.exe

sc.exe create WcfService1 binPath= "MyService.exe /run WcfService1.dll"

so muss ich eine Fledermaus erstellen Sie einfach/cmd diesen Befehl zu starten.

0

Ein Service ist von Natur aus der richtige Weg, um mit einer bestimmten Sache umzugehen, und mehrere Instanzen zu haben, ist im Allgemeinen keine gute Idee. Es ist jedoch möglich zu tun, was Sie wollen; Beispielsweise können mehrere Instanzen von SQL Server gleichzeitig ausgeführt werden.

Lesen Sie this. Im Grunde kann Ihrem Service-Installer eine Befehlszeile oder ein anderes konfigurierbares Argument übergeben werden, das ihm den Namen gibt, unter dem es sich in Windows als Dienst registrieren soll. Dies ist normalerweise automatisch abhängig von den Eigenschaften des Service-Installers und der ausführbaren Datei des Service, aber all dies kann auch dynamisch eingestellt werden. Ändern Sie den Namen, und Sie ändern die Serviceregistrierung. Der Name des Dienstes sollte (AFAIK) inspizierbar sein, indem die ausführbare Datei als Dienst ausgeführt wird, die dem WCF-Dienst mitteilen kann, für den er verantwortlich ist.

+1

Ich verstehe nicht, was ich sagen soll: Ich versuche nicht denselben exakten Dienst auszuführen ausführbar mit verschiedenen Parametern (zum Beispiel wie Windows mit svchost.exe macht). Praktisch wäre es meine eigene Implementierung eines WCF-Hosting-Servers. – Keeper

Verwandte Themen