Modelo de transacciones automáticas y DTC

15/10/2004 - 10:55 por carles_ml | Informe spam
Hola a todos.

He desarrollado una aplicación compuesta por tres elementos:
1) Un conjunto de Web Services que atacan una BD en SQL Server 2000.
2) Una aplicación web desarrollada en ASP.NET que consume esos Web Services.
3) Una aplicación de consola que actua como agente que también consume esos
Web Services.

La implantación es como sigue:
- Tanto los Web Services como la aplicación web están alojados en un
servidor compartido de un ISP con Windows Server 2003.
- El agente se ejecuta periódicamente en una máquina de nuestra red.

Problema:
- La ejecución del agente, tras la primera llamada a Web Service, finaliza
con la siguiente excepción:

System.Runtime.InteropServices.COMException (0x8004D025): El administrador
de transacción asociada ha deshabilitado su soporte para transacciones de red
o remotas.
at System.Data.Common.ITransactionExportFactory.Create(UInt32 DTCLength,
Byte[] DTCAddr, ITransactionExport& export)
at System.Data.SqlClient.Transaction.CreateTransactionExport(Byte[]
dtcAddr, UInt32 dtcLength, ITransaction transaction, ITransactionExport&
transactionExport)
at System.Data.SqlClient.Transaction.GetTransactionCookie(Byte[] dtcAddr,
ITransaction transaction, ITransactionExport& transactionExport, Byte[]&
cookie, Int32& length)
at
System.Data.SqlClient.SqlInternalConnection.EnlistNonNullDistributedTransaction(ITransaction transaction)
at
System.Data.SqlClient.SqlInternalConnection.EnlistDistributedTransaction(ITransaction newTransaction, Guid newTransactionGuid)
at
System.Data.SqlClient.SqlInternalConnection.EnlistDistributedTransaction()
at System.Data.SqlClient.SqlInternalConnection.Activate(Boolean
isInTransaction)
at System.Data.SqlClient.SqlConnection.Open()
at PT.Data.DataAccess.Base.SqlDataAccessor.ExecuteNonQuery()
at PT.Data.DataAccess.PTApplicationDataAccessor.LockTaskExecution(String
sClientPTID)
at PT.B2B.Business.Services.PTConcurrencyServices.LockTaskExecution(String
sClientPTID)
at
PT.B2B.Business.Facades.PTConcurrencyMgmtFacade.LockTaskExecution(String
sClientPTID)

Mi pregunta es, ¿tiene esto algo que ver con la configuración del DTC del
servidor de nuestro ISP?

¿A qué se debe este comportamiento?

Cabe señalar que el código está libre de errores, ya que en desarrollo
funciona correctamente.

Espero ansioso alguna sugerencia.

Gracias.
 

Preguntas similares