Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Autor: Rick Anderson
Metoda SetCompatibilityVersion je no-op pro aplikace ASP.NET Core 3.0. To znamená, že volání SetCompatibilityVersion
s libovolnou CompatibilityVersion hodnotou nemá žádný vliv na aplikaci.
- Další podverze ASP.NET Core může přinést novou
CompatibilityVersion
hodnotu. -
CompatibilityVersion
hodnoty odVersion_2_0
až doVersion_2_2
jsou[Obsolete(...)]
označeny. - Podívejte se na zásadní změny v API v Antiforgery, CORS, Diagnostice, Mvc a směrování. Tento seznam obsahuje zásadní změny pro přepínače kompatibility.
Pokud chcete zjistit, jak SetCompatibilityVersion
funguje s aplikacemi ASP.NET Core 2.x, vyberte verzi tohoto článku ASP.NET Core 2.2.
Tato SetCompatibilityVersion metoda umožňuje aplikaci ASP.NET Core 2.x vyjádřit výslovný souhlas nebo vyjádřit nesouhlas s potenciálně zásadními změnami chování zavedeným v ASP.NET Core MVC 2.1 nebo 2.2. Tyto potenciálně narušující změny chování se obecně týkají toho, jak se subsystém MVC chová a jak modul runtime volá váš kód. Když se přihlásíte, 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
). Předpokládáme, že většina aplikací nebude mít zásadní změny chování pomocí nejnovější verze.
Aplikace, které volají SetCompatibilityVersion(CompatibilityVersion.Version_2_0)
, jsou chráněné před potenciálně zásadními změnami chování zavedených ve verzích MVC ASP.NET Core 2.1/2.2. Tato ochrana:
- Nevztahuje se na všechny změny verze 2.1 nebo novější, ale zaměřuje se na potenciální změny chování modulu runtime, které by mohly ovlivnit ASP.NET Core v subsystému MVC.
- Nevztahuje se na ASP.NET Core 3.0.
Výchozí kompatibilita pro aplikace ASP.NET Core 2.1 a 2.2, které nevolajíSetCompatibilityVersion
, je 2.0 kompatibilita. To znamená, že nevolání SetCompatibilityVersion
je 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;
});
}
U aplikací, u které dochází k zásadním změnám chování, pomocí příslušných přepínačů kompatibility:
- Umožňuje používat nejnovější vydání a vyjádřit výslovný nesouhlas s konkrétními změnami, které narušují očekávané fungování.
- Dává vám čas na aktualizaci aplikace, aby fungovala s nejnovějšími změnami.
MvcOptions Dokumentace obsahuje dobré vysvětlení toho, co se změnilo a proč se změny pro většinu uživatelů zlepšily.
U ASP.NET Core 3.0 se odebralo staré chování podporované přepínači kompatibility. Máme pocit, že jsou to pozitivní změny, které mají prospěch téměř všem uživatelům. Když tyto změny představíme ve verzi 2.1 a 2.2, může mít většina aplikací výhod, zatímco ostatní mají čas je aktualizovat.