Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Tidigare, när en mellanprogramstyp med flera nöjda konstruktorer instansierades från containern för beroendeinmatning, användes den med flest parametrar. Nu händer det bara om containern för beroendeinmatning implementerar IServiceProviderIsService. Om det inte gör det utlöses ett undantag vid körning.
Version introducerad
.NET 9 RC 1
Tidigare beteende
Tidigare föredrogs den första av följande två konstruktorer (när båda var uppfyllda) eftersom den har fler parametrar.
public class CookiePolicyMiddleware
{
    public CookiePolicyMiddleware(RequestDelegate next, IOptions<CookiePolicyOptions> options, ILoggerFactory factory)
    {
        // ...
    }
    public CookiePolicyMiddleware(RequestDelegate next, IOptions<CookiePolicyOptions> options)
    {
        // ...
    }
}
Nytt beteende
Från och med .NET 9 föredras ingen konstruktor och konstruktionen misslyckas med ett fel som:
System.InvalidOperationException: "Flera konstruktorer som accepterar alla angivna argumenttyper har hittats i typen "Microsoft.AspNetCore.CookiePolicy.CookiePolicyMiddleware". Det bör endast finnas en tillämplig konstruktor."
Typ av icke-bakåtkompatibel ändring
Den här ändringen är en beteendeförändring.
Orsak till ändringen
Aktiveringsmekanismen har ändrats för att stödja nyckelinmatning av beroenden.
Rekommenderad åtgärd
Om detta händer och du inte kan uppgradera till en beroendeinmatningscontainer som implementerar IServiceProviderIsServicekan du lägga till ActivatorUtilitiesConstructorAttribute i önskad konstruktor för den berörda mellanprogramstypen.
Berörda API:er
Den här ändringen är känd för att orsaka fel när du instansierar Microsoft.AspNetCore.CookiePolicy.CookiePolicyMiddleware med Autofac.Extensions.DependencyInjection 7.x.