2013-06-19 4 views
6

Ich habe eine ServiceStack-Konsole-Anwendung, die gut funktioniert, aber natürlich muss ich es laufen lassen, nachdem es von einer Eingabeaufforderung ausgelöst. Ich möchte dies als Windows-Dienst ausführen.Wie führe ich ein ServiceStack-Konsolenprojekt als Windows-Dienst aus?

Ich überprüfe diese Wiki-Seite, die besagt, dass Sie SS als Windows-Dienst ausführen können.

https://github.com/ServiceStack/ServiceStack/wiki/Self-hosting

Ich war nicht ganz klar, wie dies zu tun. Diese StarterTemplate wird vor 2 Jahren referenziert. Klone ich dieses Projekt und kopiere dann meinen Code hinein?

https://github.com/ServiceStack/ServiceStack.Examples/tree/master/src/StarterTemplates/WinServiceAppHost

Antwort

3

Der einfachste Weg ist es, ein ServiceStack Windows Service Leer Projekt in ServiceStackVS VS.NET Extension zu erstellen.

Andernfalls können Sie das WinService-Projekt klonen und ein neues Windows-Dienstprojekt von Visual Studio erstellen und den Ansatz in Program.cs kopieren.

Ein neueres ServiceStack-Windows-Dienstprojekt ist die Razor Rockstars-Website, die in einer Windows Service Host ausgeführt wird, deren Vorlage auf der Startervorlage von ServiceStack.Examples basiert.

+0

Hallo, ich verstehe nicht den Code in [Program.cs] (https://github.com/ServiceStack/ServiceStack.Examples/blob/master/src/StarterTemplates/WinServiceAppHost/Program.cs). Wenn es ein Windows-Dienst ist, was bedeutet es "http: // localhost: port"? Es ist kein Webservice. –

+0

@Love Es läuft immer noch ein selbst gehosteter Webservice, er läuft nur in einem Windows-Dienst. – mythz

+0

Also ist die Vorlage "ServiceStack Windows Service Empty", wenn das Projekt erstellt werden kann? –

2

Ich benutze TopSelf, um eine ServiceStack-Konsole App als Windows-Dienst zu betreiben. Es funktioniert wirklich gut für mich. https://github.com/Topshelf/Topshelf

+0

interessant, ich habe TopShelf für andere Dinge verwendet. Also die Endpunkte zeigen sich gut beim Laufen im Windows-Service? – Shane

+0

Ich hatte keine Probleme. Mein Bereitstellungsskript enthält Änderungen an der ACL, um dem Benutzer, der den Dienst ausführt, die Verwendung von Port 80 zu ermöglichen: netsh http add urlacl URL = http: // *: 80/user = XXX \ XXXXXX – MikeT

+0

@MikeT Irgendwelche Beispiele dafür? – TCopple

Verwandte Themen