Aws-lambda-dotnet: 问题:如何在Net Core 3.0中将Autofac添加到LambdaEntryPoint?

创建于 2020-04-07  ·  7评论  ·  资料来源: aws/aws-lambda-dotnet

你好

我正在用Amazon.Lambda.AspNetCoreServer测试一个api项目,我偶然发现了一个我不确定如何继续进行的问题。
Autofac已更改其添加方式:
新方法:使用IHostBuilder .UseServiceProviderFactory(new AutofacServiceProviderFactory()
旧方法:使用IWebHostBuilder serviceCollection.AddAutofac()
同样,根据我的理解,IWebHostBuilder将不赞成在Init方法中使用哪个LambdaEntryPoint。

对于IWebHostBuilder,当我尝试添加Autofac时,会从该方法中获取此信息消息:

仅用于ASP.NET 3.0之前的主机。 这不适用于ASP.NET CORE 3.0+或常规宿主。

而且我不能将IHostBuilder与LambdaEntryPoint一起使用。

任何人都这样做或有任何想法如何进行? 提前致谢!

bug modullambda-client-lib response-requested

最有用的评论

是的,如果IWebHostBuilder是在.NET Core 3.1中使用Autofac的阻止程序,我现在可以连续使用。 抱歉,作为.NET Core 3.1进行的主要版本更改的一部分,我应该切换到IHostBuilder。 我试图避免该库也支持使用IWebHostBuilder的.NET Core 2.1的复杂性。

我不想在上一个主要版本发布后仅几周就做出重大的突破性更改,所以让我考虑一下是否存在一种侵入性较小的方法来解除大家的封锁。

所有7条评论

我与此同时也遇到了问题(.NET Core 3.1),无法选择替换Lambda作为DI提供程序。 我的LocalEntryPoint类很​​简单,如下所示,但是似乎无法在LambdaEntryPoint类中进行连接。

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>(); }); 
}

_normj编辑代码格式以使其可读。

是的,如果IWebHostBuilder是在.NET Core 3.1中使用Autofac的阻止程序,我现在可以连续使用。 抱歉,作为.NET Core 3.1进行的主要版本更改的一部分,我应该切换到IHostBuilder。 我试图避免该库也支持使用IWebHostBuilder的.NET Core 2.1的复杂性。

我不想在上一个主要版本发布后仅几周就做出重大的突破性更改,所以让我考虑一下是否存在一种侵入性较小的方法来解除大家的封锁。

我创建了PR https://github.com/aws/aws-lambda-dotnet/pull/633来切换到IHostBuilder,除非该功能覆盖了CreateWebHostBuilder功能。

Amazon.Lambda.AspNetCoreServer 5.1.0版本今天通过此更改发布。

我还发布了一篇博客文章,其中包含描述更改的部分。
https://aws.amazon.com/blogs/developer/one-month-update-to-net-core-3-1-lambda/

我不确定这是否是原因,但是我在5.0.0和5.1.1之间进行了回归。

我在另一个问题中发表了评论: https

protected override void Init(IWebHostBuilder webHostBuilder)
        {
            webHostBuilder
                .ConfigureAppConfiguration((context, configurationBuilder) =>
                    {
                        configurationBuilder.Sources.Clear();
                        configurationBuilder.AddEnvironmentVariables();
                    }
                )
                .ConfigureServices(
                    sc =>
                    {
                        sc.TryAddSingleton<ICustomServiceProviderFactory>(new CustomServiceProviderFactory());
                    })
                .ConfigureLogging((hostingContext, logging) =>
                    {

                        logging.AddLambdaLogger(new LambdaLoggerOptions
                        {
                            IncludeLogLevel = true,
                            Filter = (category, logLevel) => true
                        });

                    })
                    .UseStartup<Startup>();
        }

https://github.com/d-velop/dvelop-app-template-cs/blob/bug/5_1_1/AwsLambda/Entrypoint/LambdaEntryPoint.cs

@Xocix

请告知是否使用最新版本可以解决此问题。

谢谢,
阿什什

@ashishdhingra很抱歉没有回应。 对我来说,最新版本解决了该问题,感谢所有参与人员,我对结果感到满意!

此页面是否有帮助?
0 / 5 - 0 等级