Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Autor: Rick Anderson
Metoda SetCompatibilityVersion jest no-op dla aplikacji ASP.NET Core 3.0. Oznacza to, że wywołanie SetCompatibilityVersion z dowolną wartością CompatibilityVersion nie ma wpływu na aplikację.
- Następna mniejsza wersja ASP.NET Core może dostarczać nową
CompatibilityVersionwartość. -
CompatibilityVersionwartościVersion_2_0za pośrednictwemVersion_2_2są oznaczone jako[Obsolete(...)]. - Zobacz Istotne zmiany interfejsu API w obszarze Antiforgery, CORS, Diagnostics, Mvc i Routing. Ta lista zawiera przełomowe zmiany dotyczące przełączników zgodności.
Aby zobaczyć, jak SetCompatibilityVersion działa z aplikacjami platformy ASP.NET Core 2.x, wybierz wersję tego artykułu ASP.NET Core 2.2.
Metoda SetCompatibilityVersion umożliwia aplikacji ASP.NET Core 2.x wybór włączenia lub wyłączenia potencjalnie powodujących niezgodność zmian wprowadzonych w ASP.NET Core MVC 2.1 lub 2.2. Te zmiany zachowania mogące powodować problemy z kompatybilnością dotyczą zazwyczaj tego, jak zachowuje się podsystemu MVC i jak twój kod jest wywoływany przez środowisko uruchomieniowe. Wybierając tę opcję, uzyskasz najnowsze funkcje i długoterminowe działanie ASP.NET Core.
Poniższy kod ustawia tryb zgodności na ASP.NET Core 2.2:
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc()
.SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
}
Zalecamy przetestowanie aplikacji przy użyciu najnowszej wersji (CompatibilityVersion.Latest). Przewidujemy, że większość aplikacji nie będzie miała zmian wpływających na działanie przy użyciu najnowszej wersji.
Aplikacje, które wywołują SetCompatibilityVersion(CompatibilityVersion.Version_2_0), są chronione przed potencjalnie niezgodnymi zmianami wprowadzonymi w wersjach MVC ASP.NET Core 2.1/2.2. Ta ochrona:
- Nie dotyczy wszystkich zmian w wersji 2.1 lub nowszej. Jest ona przeznaczona do potencjalnie powodujących niezgodność ASP.NET zmiany zachowania podstawowego środowiska uruchomieniowego w podsystemie MVC.
- Nie rozszerza się na ASP.NET Core 3.0.
Domyślna zgodność dla aplikacji ASP.NET Core 2.1 i 2.2, które nie wywołują SetCompatibilityVersion, to zgodność z wersją 2.0. Oznacza to, że nie wywołanie SetCompatibilityVersion jest tym samym, co wywołanie SetCompatibilityVersion(CompatibilityVersion.Version_2_0).
Poniższy kod ustawia tryb zgodności na ASP.NET Core 2.2, z wyjątkiem następujących zachowań:
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;
});
}
W przypadku aplikacji, które napotykają istotne zmiany zachowania, należy użyć odpowiednich przełączników zgodności:
- Umożliwia korzystanie z najnowszej wersji i rezygnację z określonych zmian w zachowaniu powodujących zakłócenia.
- Zapewnia czas na aktualizację aplikacji, dzięki czemu działa z najnowszymi zmianami.
Dokumentacja MvcOptions zawiera dobre wyjaśnienie, co się zmieniło i dlaczego zmiany są ulepszeniem dla większości użytkowników.
W przypadku ASP.NET Core 3.0 stare zachowania obsługiwane przez przełączniki zgodności zostały usunięte. Uważamy, że są to pozytywne zmiany, które przynoszą korzyści prawie wszystkim użytkownikom. Wprowadzając te zmiany w wersji 2.1 i 2.2, większość aplikacji może przynieść korzyści, podczas gdy inne mają czas na aktualizację.