2016-04-29 5 views
6

Ich habe versucht System.ServiceProcess.ServiceController System.Diagnostics.Process;Wie Windows-Dienst in C# mvc zu stoppen oder zu starten?

zu Windows-Dienste in meinem Webformular zu steuern. Mit System.ServiceProcess.ServiceController bekomme ich Zugriff verweigert Ausnahme.

Mit System.Diagnostics.Process bekomme ich nichts. Wie kann ich Windows Services mit meinem Webformular starten/stoppen?

+4

Dienste zu kontrollieren, können Sie mit erhöhten Berechtigungen ausgeführt werden müssen. Eine Web-App macht das standardmäßig nicht. – Knelis

+0

Wie kann ich diese Erlaubnis bekommen? –

+1

Wenn ich mich erinnere, wurde die App-Pool-Identität auf System (oder eine besser geplante Benutzer-Ebene) gesetzt. I – Matthew

Antwort

2

Knelis ist richtig, ich denke, Sie brauchen nur einen anderen Prozess, um das zu tun. Vielleicht Ihr eigener Windows-Dienst, der unter lokalem System läuft und einen Dienst zur Verfügung stellt, um den Windows-Dienst zu steuern, und Ihre Web-App kann den Dienst wcf aufrufen.

+0

Ja, die beiden zu entkoppeln ist die beste Lösung. Dies ist die beste Option in Bezug auf die Sicherheit. –

+1

Stellen Sie in Abhängigkeit von der Zielgruppe sicher, dass die Dienste, die gestartet oder gestoppt werden können, auf die weiße Liste gesetzt werden. – CodeCaster

+1

@AlicanUzun Dies ist eine gute Lösung.Dieses Beispiel zeigt WCF-Service-Tutorial https://msdn.microsoft.com/en-us/library/ms733069%28v=vs.110%29.aspx Und konvertieren Sie dieses Tutorial in Windows-Dienste und dann Zugriff auf diesen Service mit Ihrer Web-Anwendung – Elshan

4

Hier sind die wichtigen Punkte zu erreichen:

1 Sie benötigen System.ServiceProcess Referenz in Ihrer Anwendung hinzuzufügen. Dieser Namespace enthält die ServiceController-Klasse für den Zugriff auf den Fensterdienst.

2 Sie müssen den Status der Fensterdienste überprüfen, bevor Sie explizit starten oder stoppen.

3 Standardmäßig wird die IIS-Anwendung unter dem ASP.NET-Konto ausgeführt. hat keine Zugriffsberechtigungen für den Fensterdienst. Also, sehr Wichtiger Teil der Lösung ist: Identitätswechsel. Sie müssen die Identität der Anwendung/Teil des Codes mit den Benutzeranmeldeinformationen , die die richtigen Rechte und die Berechtigung zum Zugriff auf das Fenster Service hat.

diesen Blog-Eintrag Siehe aus asp.net Und auch einen Blick auf diese https://stackoverflow.com/a/17497084/1641556

+2

Diese Lösung erfordert Windows-Authentifizierung auf Ihrer Site. Wenn das in Ordnung ist, ist dies eine anständige und sichere Lösung. –

+0

wie Windows-Authentifizierung vor Ort zu implementieren? Kannst du das erklären? –

+0

@AlicanUzun überprüfen Sie dieses Tutorial http://www.codeproject.com/KB/cs/svcmgr.aspx?display=Print – Elshan

Verwandte Themen