Почему моя служба Windows не остановлена ​​из-за фатальной ошибки? - PullRequest
0 голосов
/ 19 ноября 2018

Поскольку мы перешли от NSB5 к NSB6, мы также рассмотрели удаление NServiceBus.Host и вместо этого используем Topshelf.Когда мы это сделали, наш сервис больше не показывает, что он остановился, когда мы получили критический сбой.

Например, когда у нас возникают проблемы с доступом к базе данных по какой-либо причине, я хочу, чтобы сервис завершился и в СервисахМенеджер должен указывать, что не работает.Хотя, это все еще говорит, что работает, но служба фактически остановлена.Поэтому восстановление также не запускается.

Это работало, так как мы использовали NServiceBus.Host.

1 Ответ

0 голосов
/ 19 ноября 2018

Я смотрел не в ту сторону, в сторону Топшельфа. Ответ заключается в том, как настроить NServiceBus для обработки критических ошибок.

   EndpointConfiguration.DefineCriticalErrorAction(OnCriticalError);

и

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

Это сработало для меня.

...