2009-12-08 5 views
2

Je reçois cette erreur sporadiquement tout au long de la journée. Selon la pile, il est lancé lors de l'enrôlement. Si cette erreur se produisait chaque fois que je serais en mesure de résoudre les problèmes et de corriger (généralement un problème de pare-feu ou LMHOSTS). Comme ça se passe au hasard, je ne peux pas penser à ce que je ferais pour la vie.Quelle est la cause de cette erreur MS DTC de façon sporadique dans .NET?

Des idées?

System.Transactions.TransactionManagerCommunicationException: Communication with the underlying transaction manager has failed. ---> System.Runtime.InteropServices.COMException (0x80004005): Error HRESULT E_FAIL has been returned from a call to a COM component. 

    at System.Transactions.Oletx.IDtcProxyShimFactory.ReceiveTransaction(UInt32 propgationTokenSize, Byte[] propgationToken, IntPtr managedIdentifier, Guid& transactionIdentifier, OletxTransactionIsolationLevel& isolationLevel, ITransactionShim& transactionShim) 

    at System.Transactions.TransactionInterop.GetOletxTransactionFromTransmitterPropigationToken(Byte[] propagationToken) 

    --- End of inner exception stack trace --- 

    at System.Transactions.TransactionInterop.GetOletxTransactionFromTransmitterPropigationToken(Byte[] propagationToken) 

    at System.Transactions.TransactionStatePSPEOperation.PSPEPromote(InternalTransaction tx) 

    at System.Transactions.TransactionStateDelegatedBase.EnterState(InternalTransaction tx) 

    at System.Transactions.EnlistableStates.Promote(InternalTransaction tx) 

    at System.Transactions.Transaction.Promote() 

    at System.Transactions.TransactionInterop.ConvertToOletxTransaction(Transaction transaction) 

    at System.Transactions.TransactionInterop.GetExportCookie(Transaction transaction, Byte[] whereabouts) 

    at System.Data.SqlClient.SqlInternalConnection.GetTransactionCookie(Transaction transaction, Byte[] whereAbouts) 

    at System.Data.SqlClient.SqlInternalConnection.EnlistNonNull(Transaction tx) 

    at System.Data.SqlClient.SqlInternalConnection.Enlist(Transaction tx) 

    at System.Data.SqlClient.SqlInternalConnectionTds.Activate(Transaction transaction) 

    at System.Data.ProviderBase.DbConnectionInternal.ActivateConnection(Transaction transaction) 

    at System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject) 

    at System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection) 

    at System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory) 

    at System.Data.SqlClient.SqlConnection.Open() 
+0

Que contiennent les journaux d'événements? Ils peuvent avoir une erreur de MSDTC alors que l'erreur ci-dessus provient de l'application. –

Répondre

0

Avez-vous regardé here, je pense qu'il est le premier lien sur le point n ° 1 qui peut avoir la réponse pour vous? (here), à en juger par - cela ressemble à un échec d'authentification sur le MSDTC. Voici un autre link qui pointe vers un blog sur MSDTC et les transactions.

Espérons que cela aide, Cordialement, Tom.

0

Habituellement, vous savez tout de suite que vous avez un problème. Y a-t-il des pare-feu impliqués et avez-vous configuré les plages de ports RPC? Si oui, je me demande s'il pourrait y avoir une (légère) discordance entre les ports du pare-feu ouverts et la configuration de la plage de ports RPC. par exemple. la gamme RPC a 1 port de plus que le pare-feu ne le permet. Les ports RPC sont attribués de manière aléatoire et vous indiquez que l'erreur se produit de manière aléatoire afin que l'aspect corresponde. Cela expliquerait les problèmes intermittents car le problème ne se produirait que si le port pare-feu était choisi (de manière aléatoire) pour la communication RPC. De plus, si vous utilisez un cluster ou un équilibrage de charge, vérifiez que tous les serveurs sont configurés de manière identique (et correctement): il s'agit peut-être d'un seul serveur concerné par le problème.

Questions connexes