Aws-lambda-dotnet: Frage: Wie füge ich Autofda zu LambdaEntryPoint in Net Core 3.0 hinzu?

Erstellt am 7. Apr. 2020  ·  7Kommentare  ·  Quelle: aws/aws-lambda-dotnet

Hallo,

Ich teste ein API-Projekt mit Amazon.Lambda.AspNetCoreServer und bin auf ein Problem gestoßen, bei dem ich nicht sicher bin, wie ich vorgehen soll.
Autofac hat geändert, wie es hinzugefügt wurde:
Neuer Weg: Mit IHostBuilder .UseServiceProviderFactory(new AutofacServiceProviderFactory()
Old Way: Mit IWebHostBuilder serviceCollection.AddAutofac()
Auch nach meinem Verständnis wird IWebHostBuilder veraltet sein, das LambdaEntryPoint in der Init-Methode verwendet.

Für den IWebHostBuilder, wenn ich versuche, Autofac hinzuzufügen, erhalte ich diese Infomeldung von der Methode:

NUR FÜR PRE-ASP.NET 3.0 HOSTING. DIESES FUNKTIONIERT NICHT FÜR ASP.NET CORE 3.0+ ODER GENERIC HOSTING.

Und ich kann IHostBuilder nicht mit LambdaEntryPoint verwenden.

Hat jemand dies getan oder hat er Ideen, wie er vorgehen soll? Danke im Voraus!

bug modullambda-client-lib response-requested

Hilfreichster Kommentar

Ja, ich sehe jetzt die kontinuierliche Verwendung, wenn IWebHostBuilder ein Blocker für die Verwendung von Autofac in .NET Core 3.1 ist. Entschuldigung, ich hätte im Rahmen der großen Versionsänderung, die mit .NET Core 3.1 durchgeführt wurde, zu IHostBuilder wechseln sollen. Ich habe versucht, Komplexität zu vermeiden, da diese Bibliothek auch .NET Core 2.1 unterstützt, das IWebHostBuilder verwendet.

Ich möchte nur ein paar Wochen nach Erscheinen der letzten Hauptversion keine wesentlichen Änderungen am Set-Breaking vornehmen. Lassen Sie mich also überlegen, ob es einen weniger invasiven Ansatz gibt, um Sie alle zu entsperren.

Alle 7 Kommentare

Ich habe auch Probleme (.NET Core 3.1) damit und habe nicht die Möglichkeit, Lambda als DI-Anbieter zu ersetzen. Meine LocalEntryPoint-Klasse ist einfach und wird unten gezeigt. Dies scheint jedoch in der LambdaEntryPoint-Klasse unmöglich zu verkabeln.

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 bearbeitete Formatierung des Codes, um lesbar zu machen._

Ja, ich sehe jetzt die kontinuierliche Verwendung, wenn IWebHostBuilder ein Blocker für die Verwendung von Autofac in .NET Core 3.1 ist. Entschuldigung, ich hätte im Rahmen der großen Versionsänderung, die mit .NET Core 3.1 durchgeführt wurde, zu IHostBuilder wechseln sollen. Ich habe versucht, Komplexität zu vermeiden, da diese Bibliothek auch .NET Core 2.1 unterstützt, das IWebHostBuilder verwendet.

Ich möchte nur ein paar Wochen nach Erscheinen der letzten Hauptversion keine wesentlichen Änderungen am Set-Breaking vornehmen. Lassen Sie mich also überlegen, ob es einen weniger invasiven Ansatz gibt, um Sie alle zu entsperren.

Ich habe PR https://github.com/aws/aws-lambda-dotnet/pull/633 erstellt , um zu IHostBuilder zu wechseln, es sei denn, die Funktion hat die Funktion CreateWebHostBuilder überschrieben.

Version 5.1.0 von Amazon.Lambda.AspNetCoreServer wurde heute mit dieser Änderung veröffentlicht.

Ich habe auch einen Blog-Beitrag veröffentlicht, der einen Abschnitt enthält, der die Änderung beschreibt.
https://aws.amazon.com/blogs/developer/one-month-update-to-net-core-3-1-lambda/

Ich bin nicht sicher, ob dies die Ursache war, aber ich hatte eine Regression zwischen 5.0.0 und 5.1.1.

Ich habe in einer anderen Ausgabe einen Kommentar abgegeben: https://github.com/aws/aws-lambda-dotnet/issues/669#issuecomment -629447122 mit dem Stacktrace. Mein Projekt ist bei github zu finden. Mein Entrypoint hat diese Zeilen, die die Probleme verursachen werden (glaube ich):

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

Hallo @Xocix ,

Bitte geben Sie an, ob die Verwendung der neuesten Version das Problem behebt.

Vielen Dank,
Ashish

Hey @ashishdhingra Entschuldigung, dass geantwortet hast . Für mich hat die neueste Version das Problem behoben, danke an alle Beteiligten, ich bin mit dem Ergebnis zufrieden!

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen