MVC 3: Der MSDTC-Transaktionsmanager konnte die Transaktion nicht aus der Quelle abrufen

Ich verwende MVC 3 mit Entities, jetzt habe ich die folgende Codezeile von meinem Controller verwendet

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

und in meinemDeleteFM2 Die Methode, die meine in der Entity-Klasse definierte Methode ist, lautet wie folgt:

<code>    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();
            }
        }
    }
</code>

und ich habe eine separate Klasse, in der ich die Insert-Methode als definiert habe

<code>   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;
    }
</code>

Nach dem Einfügen dieser Codezeile in die obige Methode DeleteFM2

<code>      _repositoryHistory.Insert(name, message, "FM2", "Delete", dateTime);
</code>

Ich erhalte diesen Fehler, ohne diese Zeile funktioniert mein Code einwandfrei. Ich habe diese Zeile auch in allen anderen Methoden verwendet, selbst dort, wo ich Transaction Scope verwendet habe, aber ich scheine das Problem hier immer noch nicht zu verstehen. Bitte helfen Sie. Vielen Dank

Der zugrunde liegende Anbieter ist beim Öffnen fehlgeschlagen.

System.Transactions.TransactionManagerCommunicationException: Die Kommunikation mit dem zugrunde liegenden Transaktionsmanager ist fehlgeschlagen. ---> System.Runtime.InteropServices.COMException: Der MSDTC-Transaktionsmanager konnte die Transaktion aufgrund von Kommunikationsproblemen nicht aus dem Quelltransaktionsmanager abrufen. Mögliche Ursachen sind: Eine Firewall ist vorhanden und es gibt keine Ausnahme für den MSDTC-Prozess, die beiden Computer können sich nicht anhand ihrer NetBIOS-Namen finden, oder die Unterstützung für Netzwerktransaktionen ist für einen der beiden Transaktionsmanager nicht aktiviert. (Ausnahme von HRESULT: 0x8004D02B) bei System.Transactions.Oletx.IDtcProxyShimFactory.ReceiveTransaction (UInt32 propgationTokenSize, Byte [] propgationToken, IntPtr managedIdentifier, Guid & transactionIdentifier, OletxTransactionIsolationLevel & amp; propagationToken) --- Ende der inneren Ausnahmestapel-Ablaufverfolgung --- bei System.Transactions.TransactionInterop.GetOletxTransactionFromTransmitterPropigationToken (Byte [] propagationToken) bei System.Transactions.TransactionStatePSPEOperation.PSPEPromote (InternalTransaction tx) bei System.TransactionStateTransaction (InternalTransactionT tx) bei System.Transactions.EnlistableStates.Promote (InternalTransaction tx) bei System.Transactions.Transaction.Promote () bei System.Transactions.TransactionInterop.ConvertToOletxTransaction (Transaction transaction) bei System.Transactions.TransactionInte rop.GetExportCookie (Transaktionstransaktion, Byte [] Verbleib) bei System.Data.SqlClient.SqlInternalConnection.GetTransactionCookie (Transaktionstransaktion, Byte [] woAbouts) bei System.Data.SqlClient.SqlInternalConnection.EnlistNonNull (Transaktion tx) bei System.Data. SqlClient.SqlInternalConnection.Enlist (Transaction tx) bei System.Data.SqlClient.SqlInternalConnectionTds.Activate (Transaction transaction) bei System.Data.ProviderBase.DbConnectionInternal.ActivateConnection (Transaction transaction) bei System.Data.ProviderBase.DbConnection ) bei System.Data.ProviderBase.DbConnectionFactory.GetConnection (DbConnection owningConnection) bei System.Data.ProviderBase.DbConnectionClosed.OpenConnection (DbConnection outerConnection, DbConnectionFactory connectionFactory) bei System.Data.SqlClient.Sql .EntityConnection.OpenStoreConnectionIf (Boolean openCondition, DbConnection storeConnectionToOpen, DbConnection ori ginalConnection, String exceptionCode, String attemptedOperation, Boolean & closeStoreConnectionOnFailure)

Meine FireWall-Einstellungen

Antworten auf die Frage(6)

Ihre Antwort auf die Frage