为什么Windows服务不会因致命错误而停止?

时间:2018-11-19 08:16:33

标签: c# nservicebus topshelf

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

作为示例,当由于任何原因我们无法访问数据库时,我希望该服务结束,并且在Services Manager中,它应指示未运行。虽然,它仍然说正在运行,但是服务实际上已停止。因此,也不会运行恢复。

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

1 个答案:

答案 0 :(得分:2)

我朝着Topshelf的方向走错了方向。答案在于如何配置NServiceBus以处理严重错误。

   EndpointConfiguration.DefineCriticalErrorAction(OnCriticalError);

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

这对我有用。

相关问题