Aracılığıyla paylaş


Birden çok oluşturucuya sahip ara yazılım türleri

Daha önce, birden çok satisfiable oluşturucuya sahip bir ara yazılım türü bağımlılık ekleme kapsayıcısından örneklendiğinde, en çok parametreye sahip ara yazılım türü kullanılıyordu. Şimdi bu yalnızca bağımlılık ekleme kapsayıcısı uygularsa IServiceProviderIsServicegerçekleşir. Aksi takdirde çalışma zamanında bir istisna fırlatılır.

Sürüm kullanıma sunulmuştur

.NET 9 RC 1

Önceki davranış

Daha önce, aşağıdaki iki oluşturucudan ilki daha fazla parametre içerdiğinden (her ikisi de karşılandığında) tercih ediliyordu.

public class CookiePolicyMiddleware
{
    public CookiePolicyMiddleware(RequestDelegate next, IOptions<CookiePolicyOptions> options, ILoggerFactory factory)
    {
        // ...
    }

    public CookiePolicyMiddleware(RequestDelegate next, IOptions<CookiePolicyOptions> options)
    {
        // ...
    }
}

Yeni davranış

.NET 9'dan başlayarak, oluşturucuların hiçbiri tercih edilir ve oluşturma işlemi aşağıdaki gibi bir hatayla başarısız olur:

System.InvalidOperationException: 'Verilen tüm bağımsız değişken türlerini kabul eden birden çok oluşturucu 'Microsoft.AspNetCore.CookiePolicy.CookiePolicyMiddleware' türünde bulundu. Yalnızca bir uygulanabilir oluşturucu olmalıdır.'

Hataya neden olan değişikliğin türü

Bu değişiklik davranışsal bir değişikliktir.

Değişiklik nedeni

Anahtarlı bağımlılık ekleme desteğine yardımcı olmak için etkinleştirme mekanizması değiştirildi.

Bu durumda ve uygulayan IServiceProviderIsServicebir bağımlılık ekleme kapsayıcısına yükseltemiyorsanız, etkilenen ara yazılım türünün tercih edilen oluşturucusna öğesini ekleyebilirsiniz ActivatorUtilitiesConstructorAttribute .

Etkilenen API’ler

Bu değişikliğin Autofac.Extensions.DependencyInjectionMicrosoft.AspNetCore.CookiePolicy.CookiePolicyMiddlewareörnek oluşturulurken hatalara neden olduğu bilinmektedir.