簡體   English   中英

Autofac 作為 AWS 中的 IoC 容器 Lambda 無服務器 ASP.NET Core 3.1 Web ZDB974238714CA8DE64FZACE7

[英]Autofac as IoC container in AWS Lambda Serverless ASP.NET Core 3.1 Web API

我需要在 AWS Lambda 無服務器環境中使用 Autofac 作為 IoC 容器來公開 Web API。

問題是似乎沒有辦法使用 Autofac,因為 AWS 在其預配置的入口點(LambdaEntryPoint 類)中公開 IWebHostBuilder:-

protected override void Init(IWebHostBuilder builder)
{
  builder.UseStartup<Startup>();
}

本地測試工作正常,因為 LocalEntryPoint class 看起來像這樣:-

    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.io/en/latest/integration/aspnetcore.html#asp-net-core-3-0-and-generic-hosting

任何人都可以提出解決這個問題的方法嗎?

好消息!

我向 AWS 提出了這個問題,他們用新版本的 Amazon.Lambda.AspNetCoreServer (v5.1.0) 作為回應,現在包括使用IHostBuilder的 Lambda 入口點。

https://aws.amazon.com/blogs/developer/one-month-update-to-net-core-3-1-lambda/

我對其進行了測試,它使用如下入口點代碼與 Autofac 配合得很好:-

        protected override void Init(IHostBuilder builder)
        {
            builder
                .UseServiceProviderFactory(new AutofacServiceProviderFactory())
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder
                        .UseStartup<Startup>();
                });
        }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM