По сути, у меня есть фоновая служба ( синглтон), который зарегистрирован как:
Код: Выделить всё
services.AddHostedService();
Код: Выделить всё
public JobBackgroundService(
ILogger logger,
IServiceProvider serviceProvider)
{
_logger = logger;
_serviceProvider = serviceProvider;
}
...
using var scope = _serviceProvider.CreateScope();
var _detailServiceAsync = scope.ServiceProvider.GetRequiredService();
JsonSerializerOptions options = new JsonSerializerOptions
{
Converters = { new JsonStringEnumConverter(JsonNamingPolicy.CamelCase) },
};
var deserializedMessage = JsonSerializer.Deserialize(, options);
await _detailServiceAsync.OnCreated(deserializedMessage);
Теперь мне нужно ввести новый IMessageService ( через NuGet) и после вызова _detailServiceAsync.OnCreated необходимо вызвать метод SendAsync messageService на основе результата.
Я изменил свой код, как показано ниже:
Код: Выделить всё
public JobBackgroundService(
ILogger logger,
IServiceProvider serviceProvider)
{
_logger = logger;
_serviceProvider = serviceProvider;
}
...
using var scope = _serviceProvider.CreateScope();
var _detailServiceAsync = scope.ServiceProvider.GetRequiredService();
var _messageService = scope.ServiceProvider.GetRequiredService(); //
Подробнее здесь: [url]https://stackoverflow.com/questions/78230125/issue-with-service-method-call-in-net-background-service-issue-with-scope[/url]