给定一个文件->新建->Azure Functions v2 应用程序,我试图获取对 ILoggerFactory
的引用或ILogger<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
这是怎么回事?
完整的测试存储库/代码可以是 found here on GitHub .
最佳答案
在您创建依赖项注入(inject)容器并尝试解析记录器时,似乎尚未设置 HostFileLoggerProvider
所需的某些基础设施(例如 IFileLoggingStatusManager
)在启动类中。我认为您应该延迟日志记录,直到应用程序完全启动之后。
如果您查看 WebJobs 的启动代码,您会看到添加了记录器 first ,之后the external startup gets executed最后是 required logging services被添加。对于您的情况,这顺序是错误的。
关于asp.net-core - 尝试在 Azure 函数中使用依赖注入(inject)时出现奇怪的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54900982/