首页 > 解决方案 > 尝试在 Azure 函数中使用依赖注入时出现奇怪的异常

问题描述

给定一个 File->New->Azure Functions v2 应用程序,我试图获取对 anILoggerFactoryILogger<T>.

我在StartUp.cs函数应用程序启动时运行的类中执行此操作。

给定以下代码,会引发一个奇怪的异常:

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

除了以下例外:

在此处输入图像描述

 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 上找到完整的测试存储库/代码。

标签: asp.net-coredependency-injection.net-coreazure-functions

解决方案


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

如果您查看 WebJobs 的启动代码,您会看到首先添加记录器,然后执行外部启动,最后添加所需的日志记录服务。对于您的情况,这是错误的顺序。


推荐阅读