こんにちは、
Amazon.Lambda.AspNetCoreServerを使用してAPIプロジェクトをテストしていますが、どのように進めればよいかわからない問題に遭遇しました。
Autofacは、追加方法を変更しました。
新しい方法: IHostBuilderを使用.UseServiceProviderFactory(new AutofacServiceProviderFactory()
古い方法: IWebHostBuilderを使用serviceCollection.AddAutofac()
また、私の理解から、IWebHostBuilderは、LambdaEntryPointがInitメソッドで使用しているものは非推奨になります。
Autofacを追加しようとすると、IWebHostBuilderの場合、メソッドから次の情報メッセージが表示されます。
以前のASP.NET3.0ホスティングの場合のみ。 これは、ASP.NET CORE3.0以降または一般的なホスティングでは機能しません。
そして、私はLambdaEntryPointでIHostBuilderを使用できません。
誰かがこれをしたか、どのように進めるかについて何かアイデアがありますか? 前もって感謝します!
これにも問題があり(.NET Core 3.1)、DIプロバイダーとしてLambdaを置き換えるオプションがありません。 私の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を使用する.NETCore2.1もサポートするこのライブラリの複雑さを回避しようとしていました。
最後のメジャーバージョンがリリースされてからわずか数週間で、セットを壊すような大幅な変更を加えたくないので、すべてのブロックを解除するためのより侵襲性の低いアプローチがあるかどうかを考えさせてください。
関数がCreateWebHostBuilder
関数を上書きしない限り、IHostBuilderに切り替えるためにPRhttps ://github.com/aws/aws-lambda-dotnet/pull/633を作成しました。
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>();
}
こんにちは@Xocix 、
最新バージョンを使用して問題が解決するかどうかをお知らせください。
ありがとう、
Ashish
ねえ@ashishdhingra応答しなくてすみません。 私にとっては、最新バージョンで問題が解決しました。関係者全員に感謝します。結果に満足しています。
最も参考になるコメント
ええ、IWebHostBuilderが.NET Core 3.1でAutofacを使用するためのブロッカーである場合、継続的に使用されていることがわかります。 申し訳ありませんが、.NET Core 3.1で行われたメジャーバージョン変更の一環として、IHostBuilderに切り替える必要がありました。 IWebHostBuilderを使用する.NETCore2.1もサポートするこのライブラリの複雑さを回避しようとしていました。
最後のメジャーバージョンがリリースされてからわずか数週間で、セットを壊すような大幅な変更を加えたくないので、すべてのブロックを解除するためのより侵襲性の低いアプローチがあるかどうかを考えさせてください。