Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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.
- A ASP.NET Core következő alverziója új
CompatibilityVersionértéket biztosíthat. -
CompatibilityVersionaz értékekVersion_2_0-tólVersion_2_2-ig meg vannak jelölve[Obsolete(...)]. - Tekintse meg az Antiforgery, CORS, Diagnostics, Mvc és Routing jelentős API változásait. Ez a lista a kompatibilitási kapcsolók jelentős változtatásait tartalmazza.
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.