Megosztás a következőn keresztül:


Kompatibilitási verzió a ASP.NET Core MVC-hez

Készítette: Rick Anderson

A SetCompatibilityVersion módszer no-op ASP.NET Core 3.0-alkalmazásokhoz. Vagyis a SetCompatibilityVersion hívása bármilyen értékű CompatibilityVersion-vel nincs hatással az alkalmazásra.

Ha meg szeretné tudni, hogyan SetCompatibilityVersion működik ASP.NET Core 2.x-alkalmazásokkal, válassza ki a jelen cikk ASP.NET Core 2.2-es verzióját.

Ez a SetCompatibilityVersion módszer lehetővé teszi, hogy egy ASP.NET Core 2.x-alkalmazás az ASP.NET Core MVC 2.1-ben vagy 2.2-ben bevezetett, potenciálisan szakító viselkedésváltozásokat engedélyezze vagy letiltsa. Ezek a potenciálisan kompatibilitástörő viselkedésbeli változások általában az MVC-alrendszer viselkedésében és a futtatókörnyezet által a kód meghívásában jelentkeznek. A bejelentkezéssel a legújabb viselkedést és a ASP.NET Core hosszú távú viselkedését kapja.

A következő kód a kompatibilitási módot az ASP.NET Core 2.2-re állítja be:

public void ConfigureServices(IServiceCollection services)
{
    services.AddMvc()
        .SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
}

Javasoljuk, hogy tesztelje az alkalmazást a legújabb (CompatibilityVersion.Latest) verzióval. Arra számítunk, hogy a legtöbb alkalmazás nem fogja a legújabb verzióval módosítani a kompatibilitástörő viselkedést.

A hívást kezdeményező SetCompatibilityVersion(CompatibilityVersion.Version_2_0) alkalmazások védettek a ASP.NET Core 2.1/2.2 MVC-verziókban bevezetett esetleges kompatibilitástörő viselkedési változásoktól. Ez a védelem:

  • Nem vonatkozik az összes 2.1-s vagy újabb módosításra; kifejezetten az MVC alrendszerben lehetséges ASP.NET Core futásidejű viselkedési változásokra irányul.
  • Nem terjed ki ASP.NET Core 3.0-ra.

Azoknak az ASP.NET Core 2.1 és 2.2 alkalmazásoknak, amelyek nem hívják meg a SetCompatibilityVersion, az alapértelmezett kompatibilitása a 2.0. Vagyis nem a hívás SetCompatibilityVersion ugyanaz, mint a hívás SetCompatibilityVersion(CompatibilityVersion.Version_2_0).

Az alábbi kód az ASP.NET Core 2.2 kompatibilitási módot állítja be, kivéve a következő viselkedéseket:

public void ConfigureServices(IServiceCollection services)
{
    services.AddMvc()
        // Include the 2.2 behaviors
        .SetCompatibilityVersion(CompatibilityVersion.Version_2_2)
        // Except for the following.
        .AddMvcOptions(options =>
        {
            // Don't combine authorize filters (keep 2.0 behavior).
            options.AllowCombiningAuthorizeFilters = false;
            // All exceptions thrown by an IInputFormatter are treated
            // as model state errors (keep 2.0 behavior).
            options.InputFormatterExceptionPolicy =
                InputFormatterExceptionPolicy.AllExceptions;
        });
}

Azoknál az alkalmazásoknál, amelyek kompatibilitástörő viselkedésváltozásokat tapasztalnak, használják a megfelelő kompatibilitási beállításokat:

  • Lehetővé teszi a legújabb kiadás használatát, és letilthatja a kompatibilitástörő viselkedés egyes változásait.
  • Időt ad az alkalmazás frissítésére, hogy a legújabb módosításokkal működjön.

A MvcOptions dokumentáció jól elmagyarázza, hogy mi változott, és hogy a változások miért jelentenek javulást a legtöbb felhasználó számára.

A ASP.NET Core 3.0-val a kompatibilitási kapcsolók által támogatott régi viselkedések el lettek távolítva. Úgy érezzük, hogy ezek a pozitív változások szinte minden felhasználó számára előnyösek. A 2.1-ben és a 2.2-ben végzett módosítások bevezetésével a legtöbb alkalmazás hasznos lehet, míg másoknak van idejük frissíteni.