複数のコンストラクターを持つミドルウェア型
以前は、複数の満足できるコンストラクターを持つミドルウェア型が依存関係挿入コンテナーからインスタンス化された場合、パラメーターが最も多いものが使用されていました。 これは、依存関係挿入コンテナーが IServiceProviderIsServiceを実装している場合にのみ発生します。 そうでない場合は、実行時に例外がスローされます。
導入されたバージョン
.NET 9 RC 1
以前の動作
以前は、次の 2 つのコンストラクターのうち 1 つ目は、より多くのパラメーターがあるため (両方が満たされた場合) 優先されていました。
public class CookiePolicyMiddleware
{
public CookiePolicyMiddleware(RequestDelegate next, IOptions<CookiePolicyOptions> options, ILoggerFactory factory)
{
// ...
}
public CookiePolicyMiddleware(RequestDelegate next, IOptions<CookiePolicyOptions> options)
{
// ...
}
}
新しい動作
.NET 9 以降、どちらのコンストラクターも推奨されておらず、次のようなエラーで構築が失敗します。
System.InvalidOperationException: 'Microsoft.AspNetCore.CookiePolicy.CookiePolicyMiddleware' 型で、指定されたすべての引数型を受け入れる複数のコンストラクターが見つかりました。 適用可能なコンストラクターは 1 つだけ必要です。'
破壊的変更の種類
この変更は、動作変更です。
変更理由
キー付き依存関係の挿入をサポートするために、アクティブ化メカニズムが変更されました。
推奨される操作
これが発生し、 IServiceProviderIsServiceを実装する依存関係挿入コンテナーにアップグレードできない場合は、影響を受けるミドルウェア型の優先コンストラクターに ActivatorUtilitiesConstructorAttribute を追加できます。
影響を受ける API
この変更により、Autofac.Extensions.DependencyInjection 7.x でMicrosoft.AspNetCore.CookiePolicy.CookiePolicyMiddlewareをインスタンス化するときにエラーが発生することがわかされています。
.NET