Starten Sie den Windows-Dienst programmgesteuert

Ich habe ein Problem mit einer Anwendung, die ich erschaffe. Ich versuche, einen windows-Dienst starten über mein C# - app. Wenn ich auf meine start-Taste, wie es aussieht, geht alles durch aber wenn ich am server anmelden, der service immer noch nicht angezeigt, dass es läuft. Allerdings, das zweite mal ich es laufen lasse, bekomme ich eine Ausnahme, sagt der Instanz des Dienstes wird bereits ausgeführt. Wenn ich wieder am server anmelden, der service scheint gestoppt zu sein. Hat schon mal jemand gesehen?

Hier ist mein code.

try
{
    while (reader.Read())
    {
        int timeoutMilliseconds = 1000;
        string serviceName = reader["ServiceName"].ToString();
        string permission = reader["Permission"].ToString();

        if (permission == "E")
        {
            lblServStartSuccess.Visible = true;

            ServiceController service = new ServiceController(serviceName);
            TimeSpan timeout = TimeSpan.FromMilliseconds(timeoutMilliseconds);

            service.Start();
            service.WaitForStatus(ServiceControllerStatus.Running, timeout);
        }
        else
        {
            lblServErrorStart.Visible = true;
        }
    }
}
catch (Exception ex)
{
    Response.Write(ex.ToString());
}

EDIT: Hier ist die Ausnahme, die ich erhielt, auf einen service:

System.InvalidOperationException: Der Dienst Verwaltung Logischer Datenträger
Verwaltungs-Dienst wurde nicht auf computer '.'. --->
System.ComponentModel.Win32Exception: Der angegebene Dienst ist nicht
als installierter Dienst vorhanden --- Ende der inneren Ausnahme-stack-trace -

Ich weiß, der service vorhanden ist. Muss ich etwas hinzufügen, vor dem Dienst zu sagen, welche server zu betrachten?

  • Sind Sie sicher, dass der Dienst nicht stecken in den ab-Zustand? Ich erinnere mich an die "Dienste" der Systemsteuerung war nicht Brillant, zu zeigen, dass (zumindest einige windows-version vor)
  • was meinst du mit "wenn ich am server anmelden" - sind Sie versuchen, die SCM auf eine andere Maschine?
  • Ja, ich bin mit den web-service von einem remote-server. Ich bin mit einem Konto mit admin-Zugang. Ich bin nicht sicher, ob es stecken geblieben ist. Könnte mein timeout zu kurz und es ist timing aus?
  • Ach ja, und beide Systeme in Frage, die ausgeführt werden-Server 2003.
  • 1 Sekunde ist ziemlich kurz für einen remote-Dienst zu starten. Ändern Sie es auf 60 Sekunden und sehen, ob das einen Unterschied macht.
  • Ich entfernt die timeout-und das gleiche Problem. Alles scheint zu funktionieren. Der service funktioniert einfach nicht zeigen, wie Begonnen.
  • Diese vielleicht banal, aber sind Sie sicher, dass die Dienstleistung, die Sie versuchen zu starten, installiert ist auf der Maschine, die Sie versuchen, starten Sie es auf?

InformationsquelleAutor Matt | 2011-07-12
Schreibe einen Kommentar