我需要在AWS Lambda无服务器环境中使用Autofac作为IoC容器来公开一个Web API。
问题是,似乎没有办法使用Autofac作为AWS在其预配置的入口点(LambdaEntryPoint类)中公开IWebHostBuilder:----。
protected override void Init(IWebHostBuilder builder)
{
builder.UseStartup<Startup>();
}
测试本地工作正常,因为LocalEntryPoint类看起来像这样。-
public class LocalEntryPoint
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args)
{
return Host.CreateDefaultBuilder(args)
.UseServiceProviderFactory(new AutofacServiceProviderFactory())
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder
.UseStartup<Startup>();
});
}
}
请注意使用这里所描述的IHostBuilder的方法。https:/autofaccn.readthedocs.ioenlatestintegrationaspnetcore.html#asp-net-core-3-0-and-generic-hosting。
谁能给我个建议?
好消息!
我向AWS提出了这个问题,他们用他们的新版本Amazon.Lambda.AspNetCoreServer(v5.1.0)回应了这个问题,现在包括使用Lambda入口点。IHostBuilder
.
https:/aws.amazon.comlogsdeveloperone-month-update-to-net-core-3-1-lambda。
我测试了一下,它与Autofac一起工作,使用的入口点代码如下。-
protected override void Init(IHostBuilder builder)
{
builder
.UseServiceProviderFactory(new AutofacServiceProviderFactory())
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder
.UseStartup<Startup>();
});
}