问题标签 [topshelf]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1792 浏览

topshelf - 尝试安装 TopShelf 应用程序时,章鱼部署挂起

我有一项使用 TopShelf 的服务。现在我想用 Octopusdeploy 安装该服务,但我无法让它工作。当我尝试启动服务时,触手似乎挂起。Deploy.ps1 看起来像:

在 powershell 中执行该 powershell 脚本效果很好,但触手卡在最后一步。我可以在日志中看到该服务已停止、卸载和安装,但它在启动时挂起。

有什么建议吗?

0 投票
3 回答
3134 浏览

topshelf - 如何自动化 Topshelf 交互式服务安装?

我有几个在特定服务帐户下运行的 Topshelf 服务。如果我从命令行手动安装服务,我可以使用 --interactive 标志,然后会出现一个对话框,允许我输入用户名和密码。我希望能够通过 Powershell 脚本自动执行此操作。

有谁知道如何做到这一点?(不特别关心 Powershell,但我如何在任何安装脚本中提供用户名和密码。)

正如 Travis 提到的,我查看了命令行选项。几乎为我工作,但现在我有一个逃避问题。要安装,您可以键入,例如,MyService.exe install -username:Foo -password:Bar。

但是,我必须为用户名选项提供域和用户名(我通过执行 --interactive 路由知道这一点): MyService.exe install -username:mydomain\$myusername -password:Bar

我找不到一种方法来逃避这个有效的方法!抱歉 - 我的问题已经演变成其他问题,可能需要将其标记为已回答并打开另一个问题。

0 投票
1 回答
2508 浏览

powershell - 命令失败时如何让 topshelf 返回错误代码?

我正在尝试使用 powershell 启动我的服务,但目前它失败了。我不知道它为什么会失败,但这不是重点。尝试启动主机时,我没有得到正确的退出代码,因此我的自动部署会静默失败。

我想做的是:

start命令失败并显示以下消息:

而且我从来没有进入我的 powershell 脚本的 catch 语句。

更新:

请注意,我问的是如何获取 catch 语句的方法,而不是实际异常的解决方案。我已经解决了实际的异常,但是如果它失败了,我希望将来有更好的反馈,那就是希望执行 catch 语句,而不是在出错的情况下。

0 投票
1 回答
498 浏览

c# - 使用 TopShelf 处理未观察到的任务异常

我正在使用运行良好的 TopShelf 框架。但是,我很难弄清楚如何为未观察到的任务异常注册顶级异常过滤器(即订阅 TaskScheduler.UnobservedTaskException)。

我尝试了不同的地方来注册这个事件,但无论如何,当我从非等待的任务中抛出异常时,我永远不会收到通知。

使用 TopShelf 时如何正确获取这些通知。

谢谢。

0 投票
1 回答
1344 浏览

c# - “服务没有响应控制功能”?使用 IoC 时

我是 Castle Windsor 作为我的 IoC 和 TopShelf 将其作为服务运行。当我将它作为控制台应用程序运行时,它工作得很好。什么时候安装它并将其作为服务运行,过了一会儿它给了我“服务没有响应控制功能”。仅适用于 Windows 8/Windows Server 2012。它在 Windows 7 上运行良好。

当我删除BuilContainer()时,它在所有平台上都可以正常工作。

我还让我的记录器在 BuildContainer 之前记录“a0”,之后记录“a1”。将记录“a0”,但作为服务运行时不会记录“a1”。

这种方法被包括我在内的许多人使用,它适用于 Windows 7,但不适用于 Windows 8/Windows Server 2012

怎么了 ?

谢谢,佩曼

0 投票
1 回答
599 浏览

castle-windsor - 使用 IoC 解析 IServiceBus

我使用 MassTransit 进行消息队列(使用 RabbitMQ),Castle Windsor 作为我的 IoC,Topshelf 将我的应用程序作为 Windows 服务运行。

但是我遇到了这个对我来说很奇怪的问题。

这是我的代码

我有服务

这是我的主要代码(设置 Topshelf 在哪里)

该代码仅在调试时才起作用,但是当我将其作为服务运行时,它会在解析服务总线时停止,没有例外,直到 Windows 说它没有响应控制功能。请注意,它第一次有效,第二次无效,第三次有效,依此类推。

我不明白为什么,但是当我在 IoC 之外创建 IServiceBus 时,它的效果很好。

谢谢

佩曼

0 投票
2 回答
7960 浏览

windows-services - 自动服务不启动

我安装了一些控制台应用程序作为在 topshelf 下运行的服务,如果我手动安装和运行它们可以正常工作。但是,即使启动类型设置为自动,也不会自动启动。

应用程序配置如下:

这些应用程序在 Win 2008 R2 下运行,并使用以管理员身份执行的批处理文件进行安装。批处理文件包括以下内容:

执行批处理文件后,服​​务按预期运行。但是,如果我重新启动,它们仍然停止。

事件日志为每个服务返回相同的事件对:

事件 7000:由于以下错误,服务无法启动:服务未及时响应启动或控制请求。

事件 7009:等待服务连接时达到超时(30000 毫秒)。

重新启动后启动应用程序的唯一方法是app.exe start从提升的命令提示符运行。

有任何想法吗?

0 投票
4 回答
68984 浏览

.net - 将 Topshelf 应用程序安装为 Windows 服务

使用 Visual Studio Express 2012,我使用 Topshelf(版本 3.1.107.0)创建了一个控制台应用程序。该应用程序用作控制台应用程序,但我不知道如何将其安装为服务。我已经从 Visual Studio(构建、发布)中发布了项目,以管理员身份启动了命令提示符,导航到发布应用程序的文件夹,然后从命令提示符运行 setup.exe -install。该应用程序已安装并运行,但作为控制台应用程序,而不是 Windows 服务。我在这里想念什么?

对于那些可能不熟悉 Topshelf 的人来说,它是一个适用于 .Net 的 Windows 服务框架,应该有助于我上面描述的场景 - 作为控制台应用程序开发和调试,作为 Windows 服务部署。请参阅http://docs.topshelf-project.com/en/latest/index.html上的文档。

0 投票
2 回答
6066 浏览

windows - 使用 Topshelf 安装后在 services 下看不到我的服务

我很确定答案很简单,但就是这样;

我正在使用 TopShelf 安装我的服务,我可以从命令行成功安装和运行它

MyExecutable.Daemon 安装 MyExecutable.Daemon 启动

这很好,但它必须在服务中,但我没有尝试过;

但得到了

所以我被困在这里。我在这里想念什么?

0 投票
1 回答
344 浏览

topshelf - 如何从 Topshelf 服务挂钩服务控制处理程序

我有一个非常成功地使用 Topshelf 的现有 Windows 服务。

我现在需要让服务在特定的 USB 设备与机器连接/断开连接时接收通知。

我在 Topshelf 中看不到任何可以让我这样做的东西。但我相信有一种方法可以使用 Win32 API,如 ServiceControlHandlerEx 和 RegisterDeviceNotification 以及 DEVICE_NOTIFY_SERVICE_HANDLE 选项。

使用这些 Win32 API 会干扰 Topshelf 吗?据我了解,Topshelf 包装了服务控制处理程序本身,所以我的服务也尝试做同样的事情可能会导致一些问题?

更新:可以从基于 Topshelf 的服务中的服务控制处理程序挂钩设备通知。有关详细信息,请参阅示例项目。非常感谢克里斯帕特森的帮助。