尝试在Azure函数中使用依赖注入的怪异异常

时间:2019-02-27 08:25:10

标签: asp.net-core dependency-injection .net-core azure-functions

给出一个File-> New-> Azure Functions v2 App,我正在尝试引用一个ILoggerFactoryILogger<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

有人可以解释发生了什么并提供帮助吗?

完整的测试存储库/代码可以是found here on GitHub。下载,构建和运行。

1 个答案:

答案 0 :(得分:2)

在创建依赖项注入容器并尝试解析StartUp类中的记录器时,似乎尚未建立IFileLoggingStatusManager所需的某些基础结构(例如HostFileLoggerProvider)。我认为您应该将日志记录延迟到应用程序完全启动之后。

如果查看WebJobs的启动代码,您会发现记录器已添加first,之后是the external startup gets executed,最后添加了required logging services。您的案件顺序错了。