Aws-lambda-dotnet: Pertanyaan: Bagaimana cara menambahkan Autofac ke LambdaEntryPoint di net core 3.0?

Dibuat pada 7 Apr 2020  ·  7Komentar  ·  Sumber: aws/aws-lambda-dotnet

Hai,

Saya menguji proyek api dengan Amazon.Lambda.AspNetCoreServer dan saya menemukan masalah yang saya tidak yakin bagaimana cara melanjutkannya.
Autofac telah mengubah cara menambahkannya:
Cara baru: Dengan IHostBuilder .UseServiceProviderFactory(new AutofacServiceProviderFactory()
Cara Lama: Dengan IWebHostBuilder serviceCollection.AddAutofac()
Juga dari pemahaman saya, IWebHostBuilder akan dihentikan yang digunakan oleh LambdaEntryPoint dalam metode Init.

Untuk IWebHostBuilder ketika saya mencoba menambahkan Autofac, saya mendapatkan pesan info ini dari metode:

HANYA UNTUK PRA-ASP.NET 3.0 HOSTING. INI TIDAK BEKERJA UNTUK ASP.NET CORE 3.0+ ATAU GENERIC HOSTING.

Dan saya tidak dapat menggunakan IHostBuilder dengan LambdaEntryPoint.

Ada yang pernah melakukan ini atau punya ide bagaimana melanjutkan? Terima kasih sebelumnya!

bug modullambda-client-lib response-requested

Komentar yang paling membantu

Ya, saya melihat sekarang penggunaan berkelanjutan jika IWebHostBuilder adalah pemblokir untuk menggunakan Autofac di .NET Core 3.1. Maaf saya seharusnya beralih ke IHostBuilder sebagai bagian dari perubahan versi utama yang keluar dengan .NET Core 3.1. Saya mencoba menghindari kerumitan dengan pustaka ini yang juga mendukung .NET Core 2.1 yang menggunakan IWebHostBuilder.

Saya tidak ingin membuat perubahan yang signifikan pada set yang melanggar hanya beberapa minggu setelah versi mayor terakhir keluar jadi izinkan saya berpikir jika ada pendekatan yang kurang invasif untuk membuka blokir Anda semua.

Semua 7 komentar

Saya juga mengalami masalah (.NET Core 3.1) dengan ini dan tidak memiliki opsi untuk mengganti Lambda sebagai penyedia DI. Kelas LocalEntryPoint saya sederhana dan ditampilkan di bawah, namun ini tampaknya tidak mungkin untuk dihubungkan di kelas 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 mengedit pemformatan kode agar dapat dibaca._

Ya, saya melihat sekarang penggunaan berkelanjutan jika IWebHostBuilder adalah pemblokir untuk menggunakan Autofac di .NET Core 3.1. Maaf saya seharusnya beralih ke IHostBuilder sebagai bagian dari perubahan versi utama yang keluar dengan .NET Core 3.1. Saya mencoba menghindari kerumitan dengan pustaka ini yang juga mendukung .NET Core 2.1 yang menggunakan IWebHostBuilder.

Saya tidak ingin membuat perubahan yang signifikan pada set yang melanggar hanya beberapa minggu setelah versi mayor terakhir keluar jadi izinkan saya berpikir jika ada pendekatan yang kurang invasif untuk membuka blokir Anda semua.

Saya telah membuat PR https://github.com/aws/aws-lambda-dotnet/pull/633 untuk beralih ke IHostBuilder kecuali jika fungsi tersebut menggantikan fungsi CreateWebHostBuilder .

Versi 5.1.0 dari Amazon.Lambda.AspNetCoreServer keluar hari ini dengan perubahan ini.

Saya juga menerbitkan entri blog yang memiliki bagian yang menjelaskan perubahan tersebut.
https://aws.amazon.com/blogs/developer/one-month-update-to-net-core-3-1-lambda/

Saya tidak yakin, apakah ini penyebabnya, tetapi saya mengalami regresi antara 5.0.0 dan 5.1.1.

Saya membuat komentar, di Masalah lain: https://github.com/aws/aws-lambda-dotnet/issues/669#issuecomment -629447122 dengan Stacktrace. Proyek saya dapat ditemukan di github. Entrypoint saya memiliki baris ini, yang akan menyebabkan masalah (menurut saya):

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

Hai @Xocix ,

Mohon saran jika menggunakan versi terbaru menyelesaikan masalah.

Terima kasih,
Ashish

Hai @ashishdhingra maaf karena tidak merespons. Bagi saya versi terbaru menyelesaikan masalah, terima kasih semua orang yang terlibat, saya senang dengan hasilnya!

Apakah halaman ini membantu?
0 / 5 - 0 peringkat