Проблема с вызовом метода службы в фоновой службе .NET, проблема с областью действияC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Проблема с вызовом метода службы в фоновой службе .NET, проблема с областью действия

Сообщение Anonymous »

Я столкнулся со странной проблемой, не знаю, связана ли она с областью действия или async-await.
По сути, у меня есть фоновая служба ( синглтон), который зарегистрирован как:

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

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]
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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