Share via


BackgroundService에서 처리되지 않은 예외

이전 버전에서는 BackgroundService에서 처리되지 않은 예외를 throw하는 경우 예외가 손실되고 서비스가 응답하지 않는 것으로 표시됩니다. .NET 6에서는 예외를 기록하고 호스트를 중지하여 이 동작을 수정합니다.

변경 내용 설명

이전 .NET 버전에서는 BackgroundService.ExecuteAsync(CancellationToken) 재정의에서 예외가 throw되는 경우 호스트는 계속 실행되고 메시지가 기록되지 않습니다.

.NET 6부터 BackgroundService.ExecuteAsync(CancellationToken) 재정의에서 예외가 throw되면 현재 ILogger에 예외가 기록됩니다. 기본적으로 호스트는 처리되지 않은 예외가 발생할 때 중지됩니다.

도입된 버전

.NET 6

변경 이유

새 동작은 처리되지 않은 예외가 발생할 때 다른 앱 모델이 작동하는 방식과 일치합니다. 또한 BackgroundService에서 오류가 발생하지만 아무것도 기록되지 않을 때 개발자의 혼동을 초래합니다. 처리되지 않은 예외를 무시하면 안 되므로 호스트를 중지하는 것이 최적의 기본 동작입니다. 처리되지 않은 예외는 주의가 필요한 문제를 알립니다.

BackgroundService의 처리되지 않은 예외로 인해 호스트를 중지하지 않도록 하는 이전 동작을 유지하려면 HostOptions.BackgroundServiceExceptionBehaviorBackgroundServiceExceptionBehavior.Ignore로 설정할 수 있습니다.

Host.CreateBuilder(args)
    .ConfigureServices(services =>
    {
        services.Configure<HostOptions>(hostOptions =>
        {
            hostOptions.BackgroundServiceExceptionBehavior = BackgroundServiceExceptionBehavior.Ignore;
        });
    });

영향을 받는 API