Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Oleh Rick Anderson
Metode SetCompatibilityVersion adalah sebuah no-op untuk aplikasi ASP.NET Core 3.0. Artinya, memanggil SetCompatibilityVersion
dengan nilai CompatibilityVersion apa pun tidak berdampak pada aplikasi.
- Versi minor berikutnya dari ASP.NET Core dapat memberikan nilai baru
CompatibilityVersion
. -
CompatibilityVersion
nilaiVersion_2_0
melaluiVersion_2_2
ditandai[Obsolete(...)]
. - Lihat perubahan API signifikan dalam Antiforgery, CORS, Diagnostik, MVC, dan Perutean. Daftar ini mencakup perubahan signifikan untuk sakelar kompatibilitas.
Untuk melihat cara SetCompatibilityVersion
kerja aplikasi ASP.NET Core 2.x, pilih versi ASP.NET Core 2.2 dari artikel ini.
Metode SetCompatibilityVersion memungkinkan aplikasi ASP.NET Core 2.x untuk memilih ikut serta atau menolak perubahan perilaku yang berpotensi mengganggu, yang diperkenalkan dalam ASP.NET Core MVC 2.1 atau 2.2. Perubahan perilaku yang berpotensi melanggar ini umumnya dalam bagaimana subsistem MVC berperilaku dan bagaimana kode Anda dipanggil oleh runtime. Dengan ikut serta, Anda mendapatkan perilaku terbaru, dan perilaku jangka panjang ASP.NET Core.
Kode berikut mengatur mode kompatibilitas ke ASP.NET Core 2.2:
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc()
.SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
}
Kami sarankan Anda menguji aplikasi menggunakan versi terbaru (CompatibilityVersion.Latest
). Kami mengantisipasi bahwa sebagian besar aplikasi tidak akan mengalami perubahan perilaku yang mengganggu dengan versi terbaru.
Aplikasi yang memanggil SetCompatibilityVersion(CompatibilityVersion.Version_2_0)
terlindung dari perubahan perilaku yang berpotensi merusak yang diperkenalkan dalam versi MVC ASP.NET Core 2.1/2.2. Perlindungan ini:
- Tidak diterapkan untuk semua perubahan 2.1 atau yang lebih baru, melainkan ditargetkan untuk perubahan yang berpotensi merusak perilaku runtime ASP.NET Core di subsistem MVC.
- Tidak meluas ke ASP.NET Core 3.0.
Kompatibilitas default untuk aplikasi ASP.NET Core 2.1 dan 2.2 yang tidak memanggil SetCompatibilityVersion
adalah kompatibilitas 2.0. Artinya, tidak memanggil SetCompatibilityVersion
sama dengan memanggil SetCompatibilityVersion(CompatibilityVersion.Version_2_0)
.
Kode berikut mengatur mode kompatibilitas ke ASP.NET Core 2.2, kecuali untuk perilaku berikut:
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;
});
}
Bagi aplikasi yang mengalami perubahan perilaku yang mengganggu, gunakan sakelar kompatibilitas yang sesuai:
- Memungkinkan Anda menggunakan rilis terbaru dan menolak perubahan perilaku melanggar tertentu.
- Memberi Anda waktu untuk memperbarui aplikasi sehingga berfungsi dengan perubahan terbaru.
Dokumentasi MvcOptions ini memiliki penjelasan yang baik tentang apa yang berubah dan mengapa perubahan tersebut merupakan peningkatan bagi sebagian besar pengguna.
Dengan ASP.NET Core 3.0, perilaku lama yang didukung oleh sakelar kompatibilitas telah dihapus. Kami merasa ini adalah perubahan positif yang menguntungkan hampir semua pengguna. Dengan memperkenalkan perubahan ini di 2.1 dan 2.2, sebagian besar aplikasi dapat memperoleh manfaat, sementara yang lain memiliki waktu untuk memperbarui.
ASP.NET Core