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。这是结果: Topshelf 控制台输出

如果我将浏览器指向仪表板,这就是我所看到的: 顶级仪表板

“测试”服务一直说“正在创建”(等待超过 15 分钟)。

我究竟做错了什么?我尝试过多种控制台应用程序。如果我调用install我的控制台应用程序,该应用程序将成功注册。

提前致谢!

4

1 回答 1

1

当您将 Topshelf DLL 链接到您的控制台应用程序时,您应该从命令行运行您的控制台应用程序。据我所知,您正在尝试使用 Topshelf 主机。尝试运行您的控制台应用程序,您应该会看到它正确启动了您的服务。

于 2012-07-23T18:04:45.350 回答