Странное исключение при попытке использовать внедрение зависимостей в функции Azure - PullRequest
0 голосов
/ 27 февраля 2019

Учитывая приложение File-> New-> Azure Functions v2, я пытаюсь получить ссылку на ILoggerFactory или ILogger<T>.

. Я делаю это в StartUp.cs класс, который запускается при запуске приложения функции.

Учитывая следующий код, выдается странное исключение:

var serviceProvider = builder.Services.BuildServiceProvider();
var loggerFactory = serviceProvider.GetService<ILoggerFactory>();         

со следующим исключением:

enter image description here

 A host error has occurred
[27/02/2019 8:21:22 AM] Microsoft.Extensions.DependencyInjection: Unable to resolve service for type 'Microsoft.Azure.WebJobs.Script.IFileLoggingStatusManager' while attempting to activate 'Microsoft.Azure.WebJobs.Script.Diagnostics.HostFileLoggerProvider'.
Value cannot be null.
Parameter name: provider

Что происходит?

Полный тестовый репо / код можно найти здесь, на GitHub .

1 Ответ

0 голосов
/ 27 февраля 2019

Кажется, что некоторая инфраструктура (например, IFileLoggingStatusManager), необходимая для HostFileLoggerProvider, еще не настроена во время создания контейнера внедрения зависимостей и попытки разрешить регистратор в классе StartUp.Я думаю, вам следует отложить регистрацию до полного запуска приложения.

Если вы посмотрите код запуска WebJobs, вы увидите, что регистратор добавляется сначала , после этого внешний запуск выполняется и, наконец, необходимые службы ведения журнала добавляются.Это неправильный порядок для вашего дела.

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