Aracılığıyla paylaş


ASP.NET Core MVC için uyumluluk sürümü

Tarafından Rick Anderson

SetCompatibilityVersion yöntemi, ASP.NET Core 3.0 uygulamaları için no-op bir yöntemdir. Yani, SetCompatibilityVersion'yi CompatibilityVersion'nin herhangi bir değeriyle çağırmak uygulama üzerinde hiçbir etkisi yoktur.

ASP.NET Core 2.x uygulamalarıyla nasıl SetCompatibilityVersion çalıştığını görmek için bu makalenin ASP.NET Core 2.2 sürümünü seçin.

SetCompatibilityVersion yöntemi, bir ASP.NET Core 2.x uygulamasının ASP.NET Core MVC 2.1 veya 2.2'de ortaya çıkan hataya neden olabilecek davranış değişikliklerini kabul etmesine veya geri çevirmesine olanak tanır. Bu hataya neden olabilecek davranış değişiklikleri genellikle MVC alt sisteminin davranışı ve kodunuzun çalışma zamanı tarafından çağrılma şekliyle ilgilidir. Kabul ederek en son davranışı ve ASP.NET Core'un uzun vadeli davranışını elde edersiniz.

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ü (CompatibilityVersion.Latest ) kullanarak test yapmanızı öneririz. Çoğu uygulamanın en son sürümü kullanarak davranışlarında önemli değişiklikler olmayacağını tahmin ediyoruz.

Çağıran SetCompatibilityVersion(CompatibilityVersion.Version_2_0) uygulamalar, ASP.NET Core 2.1/2.2 MVC sürümlerinde ortaya çıkan hataya neden olabilecek davranış değişikliklerine karşı korunur. Bu koruma:

  • Tüm 2.1 veya sonraki değişiklikler için geçerli değildir; MVC alt sistemindeki ASP.NET Core çalışma zamanı davranışı değişikliklerini bozma olasılığına yöneliktir.
  • ASP.NET Core 3.0'a genişletilmez.

Çağrı SetCompatibilityVersion ASP.NET Core 2.1 ve 2.2 uygulamaları için varsayılan uyumluluk, 2.0 uyumluluğudur. Yani, SetCompatibilityVersion çağrısı yapılmaması, SetCompatibilityVersion(CompatibilityVersion.Version_2_0) çağrısını yapmakla aynıdır.

Aşağıdaki kod, aşağıdaki davranışlar dışında uyumluluk modunu ASP.NET Core 2.2 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;
        });
}

Davranış değişikliklerinden kaynaklanan hatalarla karşılaşan uygulamalar için uygun uyumluluk anahtarları kullanarak:

  • En yeni sürümü kullanmanıza ve belirli kesintiye yol açabilecek davranış değişikliklerini devre dışı bırakmanıza olanak tanır.
  • En son değişikliklerle çalışması için uygulamanızı güncelleştirmeniz için size zaman verir.

Belgelerde MvcOptions nelerin değiştiği ve değişikliklerin çoğu kullanıcı için neden bir iyileştirme olduğu hakkında iyi bir açıklama bulunur.

ASP.NET Core 3.0 ile uyumluluk anahtarları tarafından desteklenen eski davranışlar kaldırıldı. Bunların neredeyse tüm kullanıcılara fayda sağlayacak olumlu değişiklikler olduğunu hissediyoruz. Bu değişiklikleri 2.1 ve 2.2'de kullanıma sunarak çoğu uygulama avantajlı olurken, diğer uygulamaların da güncelleştirmeye zamanları olur.