MVC 3 :Менеджеру транзакций MSDTC не удалось извлечь транзакцию из источника

Я использую MVC 3 с Entities, теперь я использовал приведенную ниже строку кода из моего контроллера

        using (var scope = new TransactionScope())
        {
            _myRepository.DeleteFM1(id);
            _myRepository.DeleteFM2(id, name);
            scope.Complete();
        }

и внутри моего метода DeleteFM2 , который является моим методом, определенным в Entity класс выглядит следующим образом :

    public void DeleteFM2(int id, string name)
    {
        var data= _repositoryMD.Fetch().Where(mColl => mColl.Col1 == id);

        if (data!= null)
        {
                //insert here is giving some error MSDTC error !
                // here I prepare a message using the '**data**'
                _repositoryHistory.Insert(name, message, "FM2", "Delete", dateTime);


                _repositoryMD.Attach(data);
                _repositoryMD.Delete(data);
                _repositoryMD.SaveChanges();
            }
        }
    }

, и у меня есть отдельный класс, в котором я определил метод Insert как

   public bool Insert(string realName, string logMessage, string tableName, string changeType, DateTime dateTime)
    {
        var history = new History
        {
            ModifiedBy = realName,
            ChangeType = changeType,
            DateModified = dateTime,
            LogMessage = logMessage,
            TableName = tableName
        };

        _repositoryHistory.Add(history);
        _repositoryHistory.SaveChanges();

        return true;
    }

После вставки этой строки кода в вышеуказанный метод DeleteFM2

      _repositoryHistory.Insert(name, message, "FM2", "Delete", dateTime);

я получаю эту ошибку, без этой строки мой код работает просто отлично, я использовал эту строку и во всех других моих методах, даже там, где я использовал Transaction Scope, но я все еще, кажется, не понимаю проблемы здесь. Пожалуйста помоги. Спасибо

Базовый провайдер не работает при открытии.

System.Transactions.TransactionManagerCommunicationException :Связь с базовым диспетчером транзакций не удалась. ---> System.Runtime.InteropServices.COMException :Транзакция MSDTC менеджеру не удалось извлечь транзакцию из исходной транзакции менеджер из-за проблем со связью.Возможные причины: :брандмауэр присутствует и не имеет исключения для процесса MSDTC, две машины не могут найти друг друга по именам NetBIOS или поддержка сетевых транзакций не включена для одного из двух менеджеры по сделкам. (Исключение из HRESULT :0x8004D02B )в System.Transactions.Oletx.IDtcProxyShimFactory.ReceiveTransaction (UInt32 propgationTokenSize, Byte[] propgationToken, управляемый идентификатор IntPtr, Guid& идентификатор транзакции, OletxTransactionIsolationLevel& уровень изоляции, ITransactionShim и transactionShim )в System.Transactions.TransactionInterop.GetOletxTransactionFromTransmitterPropigationToken (Byte[] propagationToken)---Конец трассировки внутреннего стека исключений ---в System.Transactions.TransactionInterop.GetOletxTransactionFromTransmitterPropigationToken (Byte[] propagationToken )в System.Transactions.TransactionStatePSPEOperation.PSPEPromote (InternalTransaction TX )в System.Transactions.TransactionStateDelegatedBase.EnterState (InternalTransaction TX )в System.Transactions.EnlistableStates.Promote (InternalTransaction tx )в System.Transactions.Transaction.Promote ()в System.Transactions.TransactionInterop.ConvertToOletxTransaction (Транзакция транзакция )в System.Transactions.TransactionInterop.GetExportCookie (Транзакция транзакция, Byte[] местонахождение )в System.Data.SqlClient.SqlInternalConnection.GetTransactionCookie (Транзакция сделка,Byte[] whereAbouts )at System.Data.SqlClient.SqlInternalConnection.EnlistNonNull (Транзакция tx )в System.Data.SqlClient.SqlInternalConnection.Enlist (Транзакция TX )в System.Data.SqlClient.SqlInternalConnectionTds.Activate (Транзакция транзакция )в System.Data.ProviderBase.DbConnectionInternal.ActivateConnection (Транзакция транзакция )в System.Data.ProviderBase.DbConnectionPool.GetConnection (владеющийОбъект )в System.Data.ProviderBase.DbConnectionFactory.GetConnection (ownConnection )в System.Data.ProviderBase.DbConnectionClosed.OpenConnection (externalConnection, DbConnectionFactory connectionFactory )в System.Data.SqlClient.SqlConnection.Open ()в System.Data.EntityClient.EntityConnection.OpenStoreConnectionIf (Логическое значение openCondition, DbConnection storeConnectionToOpen, DbConnection originalConnection, String exceptionCode, String tryedOperation, Boolean& closeStoreConnectionOnFailure)

My FireWall settings

Настройки My FireWall

14
задан MatthewMartin 25 September 2014 в 18:00
поделиться