为什么我的 windows 服务没有因致命错误而停止?

Why is not my windows service stopped on fatal error?

由于我们已经从 NSB5 转移到 NSB6,我们还考虑删除 NServiceBus.Host 并改用 Topshelf。当我们这样做时,当我们收到严重故障时,我们的服务不再显示它已停止。

例如,当我们出于任何原因无法访问数据库时我希望服务结束并且在服务管理器中它应该指示不是 运行ning。虽然,它仍然显示 运行ning 但服务实际上已停止。因此也没有恢复运行。

这与我们使用 NServiceBus.Host 时一样有效。

我看错了方向,看向了 Topshelf。答案在于如何配置 NServiceBus 以处理严重错误。

   EndpointConfiguration.DefineCriticalErrorAction(OnCriticalError);

    private async Task OnCriticalError(ICriticalErrorContext context)
    {
        await context.Stop().ConfigureAwait(false);
    }

这对我有用。