gpt4 book ai didi

c# - 使用 Autofac 在我的组件类 Azure Functions 中注入(inject) ILogger 实例

转载 作者:行者123 更新时间:2023-11-30 16:40:03 24 4
gpt4 key购买 nike

我正在编写一个简单的 Azure 函数。

我已经安装了 AzureFunctions.Autofac nuget 包,并想将其用作我的 DI 库。

我已经设置了以下 AutofacConfig 类来注册我的类型:

public class AutofacConfig
{
public AutofacConfig(string functionName)
{
DependencyInjection.Initialize(builder =>
{
//do all of you initialization here

//db client
builder.RegisterType<EventComponent>()
.As<IComponent<EventModel>>().SingleInstance();
}, functionName);
}
}

这是我的 EventComponent 类,我想向其中注入(inject)所提供的 ILogger 实例。

public class EventComponent : IComponent<EventModel>
{
private ILogger _log;

public EventComponent(ILogger logger)
{
_log = logger;
}
}

这是我注入(inject) EventComponent 的方式:

[FunctionName("AddEvent")]
public static async Task<HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Function, "post", Route = null)]HttpRequestMessage req, ILogger log, [Inject]IComponent<EventModel> component)
{
log.LogInformation("C# HTTP trigger function processed a request.");

await component.Add(new EventModel() { Id = Guid.NewGuid(), Description = $"Test description nr: {new Random().Next(1, 100000)}", User = "Test User" });

return req.CreateResponse(HttpStatusCode.OK);
}

问题是,我在上面得到了一个异常,因为 Autofac 无法解析参数 Microsoft.Extensions.Logging.ILogger。

这是异常消息:

Exception binding parameter 'component'... Cannot resolve parameter 'Microsoft.Extensions.Logging.ILogger logger' of constructor 'Void .ctor(Microsoft.Extensions.Logging.ILogger)'. (See inner exception for details.) -> None of the constructors found with 'Autofac.Core.Activators.Reflection.DefaultConstructorFinder' on type 'Event.Function.Components.EventComponent' can be invoked with the available services and parameters:\r\nCannot resolve parameter 'Microsoft.Extensions.Logging.ILogger logger' of constructor 'Void .ctor(Microsoft.Extensions.Logging.ILogger)'.",

如何将 ILogger 实例注入(inject)到我的 EventComponent 类中?

最佳答案

在 Azure Functions V2 中,默认注入(inject) ILogger。另外,这里有两篇关于 Azure Functions 中的依赖注入(inject)的非常好的文章。 https://blog.mexia.com.au/dependency-injections-on-azure-functions-v2

http://codingsoul.de/2018/01/19/azure-function-dependency-injection-with-autofac/

关于c# - 使用 Autofac 在我的组件类 Azure Functions 中注入(inject) ILogger 实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52051970/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com