2

Topshelf のインスタンスを起動しようとしています。v. 2.3 のバイナリをダウンロードし、すべてを解凍しました。

次に、空のコンソール アプリケーションを作成しました。フレームワークを変更し.NET 4.0 framework、次のコードをstatic void Main()メソッドに追加しました。

Host h = HostFactory.New(x =>
{
    x.Service< MyApp>(s =>
        {
            s.SetServiceName("Something");
            s.ConstructUsing(name => new MyApp());
            s.WhenStarted(tc => tc.Start());
            s.WhenStopped(tc => tc.Stop());
        });

    x.RunAsLocalSystem();

    x.SetDescription("Something");
    x.SetDisplayName("Something");
    x.SetServiceName("Something");
});

h.Run();

F5 キーを押すと、consoleapp が期待どおりに実行されます。

次に、bin/release の出力を topshelf/services/test ディレクトリにコピーし、Topshelf.Host.exe を実行しました。結果は次のとおりです。 トップシェルフ コンソール出力

ブラウザでダッシュボードを表示すると、次のように表示されます。 トップシェルフ ダッシュボード

「テスト」サービスは「作成中」と言い続けます (15 分以上待機)。

私は何を間違っていますか?複数の種類のコンソールアプリを試しました。コンソール アプリを呼び出すinstallと、アプリは正常に登録されます。

前もって感謝します!

4

1 に答える 1

1

Topshelf DLL をコンソール アプリケーションにリンクするときは、コマンド ラインからコンソール アプリケーションを実行する必要があります。私が見る限り、代わりに Topshelf Host を使用しようとしています。コンソール アプリケーションを実行してみると、サービスが正しく開始されるはずです。

于 2012-07-23T18:04:45.350 に答える