Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Von Rick Anderson
Die SetCompatibilityVersion Methode ist eine no-op für ASP.NET Core 3.0-Apps. Das heißt, das Aufrufen SetCompatibilityVersion
mit einem beliebigen Wert CompatibilityVersion hat keine Auswirkungen auf die Anwendung.
- Die nächste Nebenversion von ASP.NET Core kann einen neuen
CompatibilityVersion
Wert bereitstellen. -
CompatibilityVersion
Werte vonVersion_2_0
bisVersion_2_2
sind[Obsolete(...)]
markiert. - Sehen Sie bedeutende API-Änderungen in Antiforgery, CORS, Diagnostics, Mvc und Routing. Diese Liste enthält signifikante Änderungen für Kompatibilitätsschalter.
Um zu sehen, wie SetCompatibilityVersion
mit ASP.NET Core 2.x-Apps funktioniert, wählen Sie die ASP.NET Core 2.2-Version dieses Artikels aus.
Die SetCompatibilityVersion Methode ermöglicht es einer ASP.NET Core 2.x-App, potenziell inkompatible Verhaltensänderungen, die in ASP.NET Core MVC 2.1 oder 2.2 eingeführt wurden, zu aktivieren oder zu deaktivieren. Diese potenziell störenden Verhaltensänderungen zeigen sich im Allgemeinen darin, wie sich das MVC-Subsystem verhält und wie Ihr Code zur Laufzeit aufgerufen wird. Wenn Sie sich anmelden, erhalten Sie das neueste Verhalten und das langfristige Verhalten von ASP.NET Core.
Der folgende Code legt den Kompatibilitätsmodus auf ASP.NET Core 2.2 fest:
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc()
.SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
}
Es wird empfohlen, Ihre App mit der neuesten Version (CompatibilityVersion.Latest
) zu testen. Wir gehen davon aus, dass die meisten Apps bei Verwendung der neuesten Version keine schwerwiegenden Verhaltensänderungen aufweisen.
Apps, die SetCompatibilityVersion(CompatibilityVersion.Version_2_0)
aufrufen, sind vor potenziell funktionsstörenden Verhaltensänderungen geschützt, die in den ASP.NET Core 2.1/2.2 MVC-Versionen eingeführt wurden. Dieser Schutz:
- Gilt nicht für alle Änderungen von 2.1 oder höher, es ist darauf ausgerichtet, potenziell ASP.NET Core-Laufzeitverhaltensänderungen im MVC-Subsystem zu unterbrechen.
- Erstreckt sich nicht auf ASP.NET Core 3.0.
Die Standardkompatibilität für ASP.NET Core 2.1- und 2.2-Apps, die nichtSetCompatibilityVersion
aufrufen, ist die Kompatibilität zu 2.0. Das heißt, SetCompatibilityVersion
nicht aufzurufen, ist gleichbedeutend mit dem Aufrufen von SetCompatibilityVersion(CompatibilityVersion.Version_2_0)
.
Der folgende Code legt den Kompatibilitätsmodus auf ASP.NET Core 2.2 fest, mit Ausnahme der folgenden Verhaltensweisen:
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;
});
}
Für Apps, die auf gravierende Verhaltensänderungen stoßen, verwenden Sie die entsprechenden Kompatibilitätsschalter.
- Ermöglicht es Ihnen, die neueste Version zu verwenden und spezifische Änderungen am Verhalten bei Unterbrechungen zu deaktivieren.
- Gibt Ihnen Zeit, Ihre App so zu aktualisieren, dass sie mit den neuesten Änderungen funktioniert.
Die MvcOptions Dokumentation enthält eine gute Erklärung darüber, was sich geändert hat und warum die Änderungen für die meisten Benutzer eine Verbesserung sind.
Mit ASP.NET Core 3.0 wurden alte Verhaltensweisen, die von Kompatibilitätsschaltern unterstützt werden, entfernt. Wir sind der Meinung, dass dies positive Veränderungen sind, die fast allen Benutzern zugute kommen. Durch die Einführung dieser Änderungen in 2.1 und 2.2 können die meisten Apps profitieren, während andere Zeit haben, zu aktualisieren.