Вернуть ненулевой код выхода для Crashed .net Core FounkserviceC#

Место общения программистов C#
Ответить
Anonymous
 Вернуть ненулевой код выхода для Crashed .net Core Founkservice

Сообщение Anonymous »

Из -за ошибок в фоновом сервисе я использую отличный обходной путь Стивена Клири. Он работает, но я не могу вернуть ненулевой код выхода после сбоя.
Минимальный рабочий пример (для использования с новым работником $ dotnet шаблон):

Код: Выделить всё

MyBackgroundService.cs

Код: Выделить всё

public class MyBackgroundService : BackgroundService {

private readonly IHostApplicationLifetime _lifetime;
public MyBackgroundService(IHostApplicationLifetime lifetime) => _lifetime = lifetime;

protected override Task ExecuteAsync(CancellationToken stoppingToken) => Task.Run(async () => {
try {
while (!stoppingToken.IsCancellationRequested) {
await Task.Delay(1000);
if (Random.Shared.NextDouble() < 0.5) throw new Exception("RANDOM CRASH!");
}
}
catch {
throw;         // I can hit a debug breakpoint here
}
finally {
_lifetime.StopApplication();
}
});

}
< /code>
Program.cs

Код: Выделить всё

public class Program {
public static int Main(string[] args) {
try {
var builder = Host.CreateApplicationBuilder(args);
builder.Services.AddHostedService();
var host = builder.Build();
host.Run();
return 0;
}
catch (Exception) {
return 1;                // 
When the app crashes, I expect the exit code to be 1
, но на самом деле это по умолчанию 0 . Когда я отлаживаю, он никогда не входит в блок улова.
Что может быть причиной?

Подробнее здесь: https://stackoverflow.com/questions/772 ... undservice
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»