Можно ли использовать IHostedService в приложении Azure Functions? - PullRequest
4 голосов
/ 28 января 2020

Независимо от того, должны ли , мы можем использовать IHostedService в приложении Azure Функции?

Вот попытка зарегистрировать размещенный сервис (в частности, фоновый сервис) as IHostedService:

internal sealed class Startup : FunctionsStartup
{
    public override void Configure(IFunctionsHostBuilder builder)
    {
        builder.Services.AddHostedService<ExampleBackgroundService>();
    }
}

Приложение функций затем выдает следующее исключение:

Microsoft.Azure.WebJobs.Script.InvalidHostServicesException: 'The following service registrations did not match the expected services:
  [Invalid] ServiceType: Microsoft.Extensions.Hosting.IHostedService, Lifetime: Singleton, ImplementationType: ExampleBackgroundService'

1 Ответ

1 голос
/ 04 мая 2020

Нет, в настоящее время это невозможно. Существует некоторое обсуждение этой проблемы GitHub :

Это не очень хорошо работает с инфраструктурой динамического масштабирования c. Контроллер масштабирования не знает о каких-либо логах c, работающих вне контекста выполнения функции, и может масштабироваться, если считает, что приложение бездействует. У заказчиков не было бы надежного механизма для поддержания его работоспособности, если только они искусственно не запускают выполнение функций, и это, безусловно, приведет к путанице и случаям поддержки. контекст функции. Разрешение регистрации пользовательских размещенных сервисов предоставит возможность, позволяющую это сделать, которая не будет хорошо работать с другими компонентами инфраструктуры (включая обнаружение мошенничества, которое может серьезно повлиять на приложение клиента)

Остальная часть потока имеет более подробную информацию и стоит проверить для получения дополнительной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...