ASP.NET Core MVC için uyumluluk sürümü
Gönderen Rick Anderson
SetCompatibilityVersionyöntemi, ASP.NET Core 3,0 uygulamaları için bir op değildir. Diğer bir deyişle, SetCompatibilityVersion herhangi bir değeriyle çağırmak CompatibilityVersion uygulama üzerinde hiçbir etkiye sahip değildir.
- ASP.NET Core sonraki küçük sürümü yeni bir
CompatibilityVersiondeğer sağlayabilir. CompatibilityVersion``Version_2_0üzerinden değerlerVersion_2_2işaretlenir[Obsolete(...)].- Bkz. Antiforgery, CORS, Diagnostics, MVC ve yönlendirme IÇINDEKI API değişikliklerini bozma. Bu liste, uyumluluk anahtarlarına yönelik son değişiklikleri içerir.
SetCompatibilityVersionASP.NET Core 2. x uygulamalarıyla nasıl çalıştığını görmek için, bu makalenin ASP.NET Core 2,2 sürümünüseçin.
SetCompatibilityVersionyöntemi, ASP.NET Core 2. x uygulamasının, ASP.NET Core MVC 2,1 veya 2,2 ' de ortaya çıkan olası davranış değişikliklerinin kabul veya devre dışı olmasına olanak sağlar. Bu olası davranışı ortadan kaldırma, MVC alt sisteminin davranışını ve kodunuzun çalışma zamanı tarafından nasıl çağrıldığını gösterir. ' De, en son davranışı ve ASP.NET Core uzun vadeli davranışını alırsınız.
aşağıdaki kod uyumluluk modunu ASP.NET Core 2,2 olarak ayarlar:
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc()
.SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
}
Uygulamanızı en son sürümü () kullanarak test etmenizi öneririz CompatibilityVersion.Latest . Çoğu uygulamanın en son sürümü kullanarak önemli davranış değişikliklerinin olmadığı tahmin ederiz.
çağıran uygulamalar SetCompatibilityVersion(CompatibilityVersion.Version_2_0) , ASP.NET Core 2.1/2.2 MVC sürümlerinde tanıtılan büyük olasılıkla davranış değişikliklerinden korunmaktadır. Bu koruma:
- tüm 2,1 ve sonraki değişikliklere uygulanmaz, MVC alt sisteminde çalışma zamanı davranış değişikliklerinin ASP.NET Core büyük olasılıkla bozmasına yöneliktir.
- ASP.NET Core 3,0 ' ye genişlemez.
ASP.NET Core 2,1 ve 2,2 olmayan uygulamalar için varsayılan uyumluluk, SetCompatibilityVersion 2,0 uyumluluğuna yöneliktir. Diğer bir deyişle, çağırma SetCompatibilityVersion ile aynı değildir SetCompatibilityVersion(CompatibilityVersion.Version_2_0) .
aşağıdaki kod, uyumluluk modunu aşağıdaki davranışlar dışında 2,2 ASP.NET Core olarak ayarlar:
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;
});
}
Doğru uyumluluk anahtarlarını kullanarak, bölme davranışı ile ilgili olan uygulamalar için:
- En son sürümü kullanmanıza ve belirli bir bölme davranışı değişikliğini geri yüklemenize olanak tanır.
- , Uygulamanızı en son değişikliklerle çalışacak şekilde güncelleştirmeniz için size zaman kazandırır.
MvcOptionsBelgelerde nelerin değiştiğini ve değişikliklerin çoğu kullanıcı için nasıl gelişdiğinin iyi bir açıklaması vardır.
ASP.NET Core 3,0 ile, uyumluluk anahtarları tarafından desteklenen eski davranışlar kaldırılmıştır. Bunlar, neredeyse tüm kullanıcılar faydalanmasını olumlu değişiklikler olduğunu hissettik. Bu değişiklikleri 2,1 ve 2,2 ' de sunarak, çoğu uygulama yararlı olabilir, diğerleri ise güncelleştirilmeye zaman alabilir.