1

Система.Продолжительность.InteropServices.COMException: диспетчеру транзакций MSDTC не удалось получить транзакцию из исходного менеджера транзакций из-за проблем со связью. Возможные причины: брандмауэр присутствует и не имеет исключения для процесса MSDTC, две машины не могут найти друг друга по их именам NetBIOS, или поддержка сетевых транзакций не включена для одного из двух менеджеров транзакций. (Исключение из HRESULT: 0x8004D02B)

Журналы, собранные с сервера приложений

время = 12/18/2018-15:58:08.204 seq = 115 Eventid = TRACING_STARTED
время = 12/18/2018-15:58:36,343 сек = 116 вечерний = TRANSACTION_ABORTING
время = 12/18/2018-15:58:36,343 сек = 117 вечерний = TRANSACTION_ABORTED
время = 12/18/2018-15:58:58,705 сек = 118 вечер = TRACING_STOPPED

Журналы, собранные с сервера базы данных (SQL Server)

время = 12/18/2018-15:58:30,302 сек = 386 вечер = TRANSACTION_BEGUN
время = 12/18/2018-15:58:30,302 сек = 387 Eventid = RM_ENLISTED_IN_TRANSACTION
время = 12/18/2018-15:58:36,349 сек = 388 вечерний = RECEIVED_ABORT_REQUEST_FROM_BEGINNER
время = 12/18/2018-15:58:36,349 сек = 389 вечерний = TRANSACTION_ABORTING
время = 12/18/2018-15:58:36,349 сек = 390 вечерний = RM_ISSUED_ABORT
время = 12/18/2018-15:58:36,349 сек = 391 вечер = RM_ACKNOWLEDGED_ABORT
время = 12/18/2018-15:58:36,349 сек = 392 вечер = TRANSACTION_ABORTED

Из этого видно, что две машины могли общаться друг с другом, транзакция была запущена, но затем приложение отправляет сообщение, чтобы прервать транзакцию.

Это происходит периодически, может кто-нибудь сообщить мне, что может привести к тому, что приложение прервет транзакцию?

Блок кода, вызывающий это исключение, имеет заданную форму

using (TransactionScope transactionScope = new TransactionScope(TransactionScopeOption.RequiresNew, new TransactionOptions() { IsolationLevel = IsolationLevel.ReadUncommitted }))
{
    // Data insertion
    // DbContext.SaveChanges()

    // Data update
    // DbContext.SaveChanges()

    transactionScope.Complete();
}

0