System.Runtime.InteropServices.COMException: Manajer transaksi MSDTC tidak dapat menarik transaksi dari manajer transaksi sumber karena masalah komunikasi. Kemungkinan penyebabnya adalah: firewall hadir dan tidak memiliki pengecualian untuk proses MSDTC, kedua mesin tidak dapat menemukan satu sama lain dengan nama NetBIOS mereka, atau dukungan untuk transaksi jaringan tidak diaktifkan untuk salah satu dari dua manajer transaksi. (Pengecualian dari HRESULT: 0x8004D02B)
Log dikumpulkan dari server aplikasi
waktu = 12/18 / 2018-15: 58: 08.204 seq = 115 eventid = TRACING_STARTED
waktu = 12/18 / 2018-15: 58: 36.343 seq = 116 eventid = TRANSACTION_ABORTING
waktu = 12/18 / 2018-15: 58: 36.343 seq = 117 eventid = TRANSACTION_ABORTED
waktu = 12/18 / 2018-15: 58: 58.705 seq = 118 eventid = TRACING_STOPPED
Log dikumpulkan dari server database (SQL Server)
waktu = 12/18 / 2018-15: 58: 30.302 seq = 386 eventid = TRANSACTION_BEGUN
waktu = 12/18 / 2018-15: 58: 30.302 seq = 387 eventid = RM_ENLISTED_IN_TRANSACTION
waktu = 12/18 / 2018-15: 58: 36.349 seq = 388 eventid = RECEIVED_ABORT_REQUEST_FROM_BEGINNER
waktu = 12/18 / 2018-15: 58: 36.349 seq = 389 eventid = TRANSACTION_ABORTING
waktu = 12/18 / 2018-15: 58: 36.349 seq = 390 eventid = RM_ISSUED_ABORT
waktu = 12/18 / 2018-15: 58: 36.349 seq = 391 eventid = RM_ACKNOWLEDGED_ABORT
waktu = 12/18 / 2018-15: 58: 36.349 seq = 392 eventid = TRANSACTION_ABORTED
Yang menunjukkan kedua mesin mampu berkomunikasi satu sama lain, transaksi dimulai tetapi kemudian aplikasi mengirim pesan untuk membatalkan transaksi.
Terjadi sebentar-sebentar, adakah yang bisa memberi tahu saya apa yang menyebabkan aplikasi membatalkan transaksi?
Blok kode yang menyebabkan pengecualian ini adalah dari formulir yang diberikan
using (TransactionScope transactionScope = new TransactionScope(TransactionScopeOption.RequiresNew, new TransactionOptions() { IsolationLevel = IsolationLevel.ReadUncommitted }))
{
// Data insertion
// DbContext.SaveChanges()
// Data update
// DbContext.SaveChanges()
transactionScope.Complete();
}