Aracılığıyla paylaş


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

Gönderen Rick Anderson

SetCompatibilityVersion yöntemi, ASP.NET Core 3.0 uygulamaları için bir no-op yöntemidir. Başka bir ifadeyle, herhangi bir değeriyle çağırmanın SetCompatibilityVersionCompatibilityVersion uygulama üzerinde hiçbir etkisi yoktur.

  • ASP.NET Core'un sonraki ikincil sürümü yeni CompatibilityVersion bir değer sağlayabilir.
  • CompatibilityVersion değerleri Version_2_0Version_2_2 olarak işaretlenir [Obsolete(...)].
  • Bkz . Antiforgery, CORS, Diagnostics, Mvc ve Routing'da hataya neden olan API değişiklikleri. Bu liste, uyumluluk anahtarları için hataya neden olan değişiklikleri içerir.

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 hataya neden olan davranış değişikliklerine sahip olmadığı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 ve üzeri 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 yapmayan ASP.NET Core 2.1 ve 2.2 uygulamaları için varsayılan uyumluluk 2.0 uyumluluğudur. Yani, arama SetCompatibilityVersion yapılmaması ile çağrısı SetCompatibilityVersion(CompatibilityVersion.Version_2_0)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;
        });
}

Hataya neden olan davranış değişiklikleriyle karşılaşan uygulamalar için uygun uyumluluk anahtarlarını kullanarak:

  • En son sürümü kullanmanıza ve belirli hataya neden olan davranış değişikliklerini geri çevirmenize 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.