Ошибка области вложенных транзакций .Net - диспетчер транзакций MSDTC не смог извлечь транзакцию
Приведенная ниже ошибка возникает при выполнении нескольких транзакций в одной области транзакций
Ошибка - "диспетчер транзакций MSDTC не смог извлечь транзакцию из исходного диспетчера транзакций из-за проблем со связью. Возможные причины: присутствует брандмауэр, и он не имеет исключения для процесса MSDTC, две машины не могут найти друг друга по своим именам NetBIOS, или поддержка сетевых транзакций не включена для одного из двух менеджеров транзакций. (Исключение из HRESULT: 0x8004D02B)"
Я использую приведенный ниже пример кода для сохранения данных карты,
public Int64 SaveDetails(CardDO _Card) { try { Int64 PayerId = 0; // Begin the transcation and call the add method var transactionScopeOptions = new TransactionOptions(); transactionScopeOptions.IsolationLevel = System.Transactions.IsolationLevel.Serializable; transactionScopeOptions.Timeout = TimeSpan.MaxValue; using (TransactionScope OuterScope = new TransactionScope(TransactionScopeOption.Required, transactionScopeOptions)) { using (TransactionScope InnerScope1 = new TransactionScope()) { PayerId = SavePayer(_Card.PayerDetails, _Card.ROW_STATE); InnerScope1.Complete(); } _Card.PAYER_ID = PayerId; using (TransactionScope InnerScope2 = new TransactionScope()) { _Card.PAYER_ID = PayerId; if (_Card.ROW_STATE == RowState.Created) { _Card._CARD_ID = SaveCardDetails(_Card); } else if (_Card.ROW_STATE == RowState.Modified) { int result = UpdateCardDetails(_Card); if (result <= 0) { throw new Exception("Error : card updation failed."); } } InnerScope2.Complete(); } using (TransactionScope InnerScope3 = new TransactionScope()) { SaveCardLabour(_Card.CardLabourList, _Card.ROW_STATE, _Card._CARD_ID); InnerScope3.Complete(); } OuterScope.Complete(); } // DALHelper.Instance.Commit(); // Commit the Transcation return _Card._CARD_ID; } catch (TransactionAbortedException ex) { throw new Exception(" Card Save Aborted: " + ex.Message); } catch (Exception ex) { throw ex; } }
Первый вызов БД "SavePayer()" работает идеально; когда он входит во второй вызов БД "SaveCardDetails", транскрипция становится неудачной, и я получаю следующую ошибку,
Диспетчер транзакций MSDTC не смог извлечь транзакцию из исходного диспетчера транзакций из-за проблем со связью. Возможные причины: присутствует брандмауэр, и он не имеет исключения для процесса MSDTC, две машины не могут найти друг друга по своим именам NetBIOS, или поддержка сетевых транзакций не включена для одного из двух менеджеров транзакций. (Исключение из HRESULT: 0x8004D02B)
Если у вас есть какие - то идеи по этому вопросу, помогите мне..
Sunasara Imdadhusen
Я изменил название вопроса. Не делайте название вашего вопроса слишком длинным. она должна быть короткой и понятной