C# AWS Lambda无服务器ASP.NET Core 3.1 Web API中作为IoC容器的Autofac

C# AWS Lambda无服务器ASP.NET Core 3.1 Web API中作为IoC容器的Autofac,c#,dependency-injection,aws-lambda,asp.net-core-webapi,autofac,C#,Dependency Injection,Aws Lambda,Asp.net Core Webapi,Autofac,我需要在AWS Lambda无服务器环境中公开使用Autofac作为IoC容器的Web API 问题是似乎没有办法使用Autofac,因为AWS在其预配置的入口点(LambdaEntryPoint类)中公开IWebHostBuilder:- protected override void Init(IWebHostBuilder) { builder.UseStartup(); } 本地测试工作正常,因为LocalEntryPoint类如下所示:- public class Local

我需要在AWS Lambda无服务器环境中公开使用Autofac作为IoC容器的Web API

问题是似乎没有办法使用Autofac,因为AWS在其预配置的入口点(LambdaEntryPoint类)中公开IWebHostBuilder:-

protected override void Init(IWebHostBuilder)
{
builder.UseStartup();
}
本地测试工作正常,因为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>();
                });
        }
    }
public类LocalEntryPoint
{
公共静态void Main(字符串[]args)
{
CreateHostBuilder(args.Build().Run();
}
公共静态IHostBuilder CreateHostBuilder(字符串[]args)
{
返回Host.CreateDefaultBuilder(args)
.UseServiceProviderFactory(新的AutofacServiceProviderFactory())
.ConfigureWebHostDefaults(webBuilder=>
{
韦伯造船厂
.UseStartup();
});
}
}
注意使用此处描述的方法使用IHostBuilder

有人能提出解决这个问题的办法吗?

好消息

我向AWS提出了这个问题,他们用新版本的Amazon.Lambda.AspNetCoreServer(v5.1.0)进行了响应,该版本现在使用
IHostBuilder
包含Lambda入口点

我对它进行了测试,它与Autofac配合使用非常好,使用的入口点代码如下:-

        protected override void Init(IHostBuilder builder)
        {
            builder
                .UseServiceProviderFactory(new AutofacServiceProviderFactory())
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder
                        .UseStartup<Startup>();
                });
        }
protected override void Init(IHostBuilder)
{
建设者
.UseServiceProviderFactory(新的AutofacServiceProviderFactory())
.ConfigureWebHostDefaults(webBuilder=>
{
韦伯造船厂
.UseStartup();
});
}

在通用主机级别而不是在web主机级别进行连接并不是Autofac所特有的,例如虽然我还没有答案,但寻找其他类似的系统如何解决这个问题可能会给你一些指导。我的经验表明AWS总是提供。。。但显然不是对这个问题或答案投赞成票;-)
        protected override void Init(IHostBuilder builder)
        {
            builder
                .UseServiceProviderFactory(new AutofacServiceProviderFactory())
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder
                        .UseStartup<Startup>();
                });
        }