将Autofac作为AWS Lambda Serverless ASP.NET Core 3.1 Web API中的IoC容器。

问题描述 投票:1回答:1

我需要在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。

谁能给我个建议?

c# dependency-injection aws-lambda asp.net-core-webapi autofac
1个回答
1
投票

好消息!

我向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>();
                });
        }
© www.soinside.com 2019 - 2024. All rights reserved.