web-dev-qa-db-ja.com

コマンドラインまたはデバッガーからサービスを開始できません

Windowsサービスを作成し、サーバーにインストールしました。それはうまく機能するように見えます。つまり、意図したとおりに動作します。しかし、リモートデスクトップ経由でサーバーにログオンすると、次のメッセージが表示されます。

コマンドラインまたはデバッガからサービスを開始できません。 Windowsサービスを最初にインストールし(installutil.exeを使用)、次にServerExplorer、Windowsサービス管理ツール、またはNET STARTコマンドで開始する必要があります。

クリックして、サービスエクスプローラーに移動してサービスを確認します。エラーは報告されていません。

これをインストールしたので、ローカルシステムを「ログオン」として使用します。

ありがとう。

28
Boomerang

MainクラスのProgramメソッドを次のように変更します。

    /// <summary>
    ///   The main entry point for the application.
    /// </summary>
    private static void Main()
    {
        var myService = new MyService();
        if (Environment.UserInteractive)
        {
            Console.WriteLine("Starting service...");
            myService.Start();
            Console.WriteLine("Service is running.");
            Console.WriteLine("Press any key to stop...");
            Console.ReadKey(true);
            Console.WriteLine("Stopping service...");
            myService.Stop();
            Console.WriteLine("Service stopped.");
        }
        else
        {
            var servicesToRun = new ServiceBase[] { myService };
            ServiceBase.Run(servicesToRun);
        }
    }

Startメソッドをサービスクラスに追加する必要があります。

    public void Start()
    {
        OnStart(new string[0]);
    }

プロジェクトプロパティの[アプリケーション]タブで、プロジェクトの出力タイプを[Windowsアプリケーション]ではなく[コンソールアプリケーション]に変更します。これで、F5キーを押すだけでデバッグを開始できますが、実行可能ファイルをWindowsサービスとして実行できます。

41
Jeroen Kok