我正在编写一个简单的 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
课程,我想将ILogger
提供的实例注入其中。
public class EventComponent : IComponent<EventModel>
{
private ILogger _log;
public EventComponent(ILogger logger)
{
_log = logger;
}
}
这是我注入 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。
这是异常消息:
异常绑定参数“组件”...无法解析构造函数“Void .ctor(Microsoft.Extensions.Logging.ILogger)”的参数“Microsoft.Extensions.Logging.ILogger logger”。(有关详细信息,请参阅内部异常。)-> 无法使用可用的服务和参数调用类型为 'Event.Function.Components.EventComponent' 的具有 'Autofac.Core.Activators.Reflection.DefaultConstructorFinder' 的构造函数:\r \n无法解析构造函数 'Void .ctor(Microsoft.Extensions.Logging.ILogger)' 的参数 'Microsoft.Extensions.Logging.ILogger logger'。",
如何将ILogger
实例注入我的EventComponent
班级?