So geben Sie Befehlszeilenoptionen für den Service in TopShelf an

8

Ich verwende Befehlszeilenargumente, um eine Konfiguration an den Windows-Dienst zu übergeben (es werden nur wenige Instanzen mit verschiedenen Befehlszeilen sein).

Mein Code sieht so aus:

%Vor%

Wenn ich den Dienst installiere, verwende ich:

%Vor%

Leider sind sqlserver Befehlszeilenoptionen nur in der Installationsphase verfügbar und gehen nicht zu den Parametern des Dienstes. Wenn ich den Dienst ausführe, bekomme ich keinen Parameterwert, den ich brauche.

Gibt es eine Möglichkeit, die Befehlszeile des von TopShelf gestarteten Dienstes zu ändern?

    
Mike Chaliy 06.03.2013, 11:11
quelle

3 Antworten

4

Ich habe eine ähnliche Anforderung und leider war das Speichern der Befehlszeilenparameter in einer Datei keine Option.

Haftungsausschluss: Dieser Ansatz gilt nur für Windows

Zuerst habe ich eine Nach der Installation

hinzugefügt %Vor%

In AddCommanLineParameterToStartupOptions Ich aktualisiere den ImagePath Windows-Registrierungseintrag, damit der Dienst die Befehlszeilenparameter aufnehmen kann.

TopShelf fügt nach diesem Schritt seine Parameter hinzu, um Duplikate von servicename und instance zu vermeiden. Vielleicht möchten Sie mehr als nur diese herausfiltern, aber in meinem Fall war das genug.

%Vor%     
Amith Sewnarain 16.03.2016 18:29
quelle
2

Sie können es zu diesem Zeitpunkt nicht leicht machen. Ich würde diesen Thread auf der Mailingliste überprüfen

Ссылка

    
Travis 07.03.2013 01:06
quelle
2

Sie können die an den Service übergebene Befehlszeile nicht ändern. Ich umgehe das, indem ich diese Parameter in der Konfiguration neben der exe speichere. So kann ein Benutzer dies tun:

%Vor%

und die App speichert die Verbindungszeichenfolge in einer Datei (entweder mit System.IO.File oder mit ConfigurationManager)

Dann, wenn der Benutzer dies tut:

%Vor%

Oder wenn der Dienst als Windows-Dienst ausgeführt wird, wird die Anwendung nur von config geladen.

    
Daniel 26.02.2015 17:17
quelle

Tags und Links