Gejala
Setelah Anda menginstal 2018 Juli .NET Framework keamanan dan kualitas pembatalan yang berlaku untuk .NET Framework 4.6, 4.6.1, 4.6.2, 4,7, 4.7.1 dan 4.7.2 di Windows 7 Paket Layanan 1 (SP1), Windows Server 2008 R2 SP1 atau Windows Server 2008 SP2, Anda melihat galat pada .NET Kerangka aplikasi yang memenuhi kriteria berikut ini:
-
Aplikasi menggunakan contoh kelas System.Transaction.TransactionScope di mana aliran transaksi diaktifkan dengan melewati TransactionScopeAsyncFlowOption.Enabled ke konstruktor.
-
Aplikasi membuat satu atau lebih panggilan jarak jauh sementara satu lingkup transaksi tersebut aktif. Dalam hal ini, panggilan jarak jauh adalah panggilan yang perjalanan melalui proksi transparan sebelum mencapai objek server. Contoh panggilan jarak jauh termasuk panggilan ke domain aplikasi lainnya dan panggilan dibuat melalui saluran jarak jauh, seperti saluran klien yang ditetapkan di ruang nama System.Runtime.Remoting.Channels .
-
Setelah panggilan jarak jauh, System.Transactions.Transaction.Current mengembalikan nilai null bukannya nilai yang dikembalikan sebelum panggilan jarak jauh.
Penyelesaian Masalah
Untuk mengatasi masalah ini, cobalah salah satu dari metode berikut ini:
-
Untuk setiap lingkup transaksi yang memungkinkan aliran transaksi, mengubah aplikasi untuk memastikan bahwa panggilan jarak jauh tidak terjadi di mana saja di dalam kode yang dijalankan ketika lingkup transaksi aktif. Ketika Anda menentukan apakah lingkup transaksi yang berisi panggilan jarak jauh, pertimbangkan pedoman berikut:
-
Panggilan ke metode statis tidak pernah panggilan jarak jauh.
-
Untuk panggilan ke contoh metode pada objek target, panggilan jauh hanya jika objek target proksi transparan.
-
Untuk panggilan ke konstruktor, panggilan jauh hanya jika objek dibangun proksi transparan.
CatatanAnda selalu dapat menggunakan metode System.Runtime.Remoting.RemotingServices.IsTransparentProxy untuk memeriksa apakah objek proksi transparan.
-
-
Nonaktifkan aliran transaksi dengan menghapus TransactionScopeAsyncFlowOption.Enabled konstruktor argumen.
Peringatan
Pemecahan masalah ini mungkin menyebabkan kesalahan lain jika operasi "menunggu" eksekusi sementara lingkup transaksi aktif.
-
Properti Transaction.Current tidak secara otomatis serial untuk panggilan jarak jauh. Harus disampaikan sebagai parameter. Jika panggilan jarak jauh tidak lulus transaksi sebagai parameter dan tidak membuat panggilan balik klien selama panggilan jarak jauh, Anda dapat membuat panggilan jarak jauh di dalam objek TransactionScope baru yang menggunakan TransactionScopeOptions.Suppress opsi. Dalam hal ini menekan transaksi lingkup, properti Transaction.Current memiliki nilai nol.
Status
Kami menyadari masalah ini dan sedang bekerja pada resolusi.