Verze kompatibility pro ASP.NET Core MVC

Autor: Rick Anderson

Metoda SetCompatibilityVersion není operace pro aplikace ASP.NET Core 3.0. To znamená, že SetCompatibilityVersion volání s libovolnou CompatibilityVersion hodnotou nemá žádný vliv na aplikaci.

Pokud chcete SetCompatibilityVersion vidět, jak ASP.NET Core s aplikacemi 2.x, vyberte verzi ASP.NET Core 2.2 tohoto článku.

Metoda umožňuje aplikaci ASP.NET Core 2.x vyjádřit výslovný souhlas nebo vyjádřit výslovný nesouhlas se změnami potenciálně potenciálně způsobovat nehromí, ke kterým dochází v SetCompatibilityVersion ASP.NET Core MVC 2.1 nebo 2.2. Tyto změny potenciálně způsobovat chyby chování jsou obecně v tom, jak se subsystém MVC chová a jak modul runtime volá váš kód. Když se přihlásíte k odběru, získáte nejnovější chování a dlouhodobé chování ASP.NET Core.

Následující kód nastaví režim kompatibility na ASP.NET Core 2.2:

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

Doporučujeme otestovat aplikaci pomocí nejnovější verze ( CompatibilityVersion.Latest ). Očekáváme, že u většiny aplikací nebude při použití nejnovější verze docházaná změna chování při pohromě.

Aplikace, které volají , jsou chráněné před změnami potenciálně rušiváho chování představené SetCompatibilityVersion(CompatibilityVersion.Version_2_0) ve verzích ASP.NET Core MVC verze 2.1/2.2. Tato ochrana:

  • Nevztahuje se na všechny změny verze 2.1 a novější, cílí na potenciálně ASP.NET Core změny chování modulu runtime v subsystému MVC.
  • Nevztahuje se na ASP.NET Core 3.0.

Výchozí kompatibilita pro ASP.NET Core 2.1 a 2.2, které nevolají, je kompatibilita SetCompatibilityVersion 2.0. To znamená, že volání SetCompatibilityVersion není stejné jako volání SetCompatibilityVersion(CompatibilityVersion.Version_2_0) .

Následující kód nastaví režim kompatibility na ASP.NET Core 2.2 s výjimkou následujících chování:

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;
        });
}

Pro aplikace, u které dochází ke změnám chování při chybách, příslušnými přepínači kompatibility:

  • Umožňuje používat nejnovější verzi a odhlásit se od konkrétních změn chování při rozbíjení.
  • Dává vám čas aktualizovat aplikaci tak, aby pracovala s nejnovějšími změnami.

Dokumentace obsahuje dobré vysvětlení toho, co se změnilo a proč jsou MvcOptions tyto změny pro většinu uživatelů lepší.

V ASP.NET Core verze 3.0 se odebrala stará chování podporovaná přepínači kompatibility. Myslíme si, že se jedná o pozitivní změny, které prospěšují téměř všem uživatelům. Zavedením těchto změn ve windows 2.1 a 2.2 může být většina aplikací přínosná, zatímco jiní mají čas je aktualizovat.