Al guardar y enviar autorizar una solicitud de vacaciones me muestra el siguiente mensaje de error:

System.Data.EntityException: The underlying provider failed on Open.
 ---> System.Transactions.TransactionManagerCommunicationException: Communication with the underlying transaction manager has failed.
 ---> System.Runtime.InteropServices.COMException: The MSDTC transaction manager was unable to pull the transaction from the source transaction manager due to communication problems. Possible causes are: a firewall is present and it doesn't have an exception for the MSDTC process, the two machines cannot find each other by their NetBIOS names, or the support for network transactions is not enabled for one of the two transaction managers. (Exception from HRESULT: 0x8004D02B)
 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.EnlistNonNull(Transaction tx)
 at System.Data.ProviderBase.DbConnectionPool.PrepareConnection(DbConnection owningObject, DbConnectionInternal obj, Transaction transaction)
 at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection)
 at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection)
 at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection)
 at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)
 at System.Data.SqlClient.SqlConnection.TryOpenInner(TaskCompletionSource`1 retry)
 at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry)
 at System.Data.SqlClient.SqlConnection.Open()
 at System.Data.EntityClient.EntityConnection.OpenStoreConnectionIf(Boolean openCondition, DbConnection storeConnectionToOpen, DbConnection originalConnection, String exceptionCode, String attemptedOperation, Boolean& closeStoreConnectionOnFailure) --- End of inner exception stack trace ---
 at System.Data.EntityClient.EntityConnection.OpenStoreConnectionIf(Boolean openCondition, DbConnection storeConnectionToOpen, DbConnection originalConnection, String exceptionCode, String attemptedOperation, Boolean& closeStoreConnectionOnFailure)
 at System.Data.EntityClient.EntityConnection.Open()
 at System.Data.Objects.ObjectContext.EnsureConnection()
 at System.Data.Objects.ObjectQuery`1.GetResults(Nullable`1 forMergeOption)
 at System.Data.Objects.DataClasses.EntityCollection`1.Load(List`1 collection, MergeOption mergeOption)
 at System.Data.Objects.DataClasses.RelatedEnd.DeferredLoad()
 at System.Data.Objects.DataClasses.EntityCollection`1.GetEnumerator()
 at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext()
 at System.Linq.Enumerable.Sum(IEnumerable`1 source)
 at Aseinfo.VH4.Acciones.Services.SolicitudVacacionRuleValidator.Validate(SolicitudVacacion entity) in c:\vh4\VH4\Acciones\Services\SolicitudesVacaciones\SolicitudVacacionRuleValidator.cs:line 123
 at Aseinfo.Infrastructure.Base.Entity.EntityServiceBase`2.DoInsert(T entity, Boolean saveChanges, Boolean bypassWorkflowInitialization) in c:\vh4\Infrastructure\Base\Entity\EntityServiceBase.cs:line 773
 at Aseinfo.VH4.Acciones.Controllers.SolicitudVacacionController.SaveSolicitudVacacion(SolicitudVacacion entity, Boolean inserting, Nullable`1 codigoEmpleo, Nullable`1 iniciaFlujo, Boolean esPortal) in c:\BuildAgent\work\608d469cc106b504\VH4\Acciones\Controllers\SolicitudVacacionController.cs:line 658
 at Aseinfo.VH4.Acciones.Controllers.SolicitudVacacionController.Create(SolicitudVacacion entity, Nullable`1 codigoEmpleo, Nullable`1 iniciaFlujo, DateTime fechaInicio, DateTime fechaFinal) in c:\BuildAgent\work\608d469cc106b504\VH4\Acciones\Controllers\SolicitudVacacionController.cs:line 409
 at lambda_method(Closure , ControllerBase , Object[] )
 at System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters)
 at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters)
 at System.Web.Mvc.ControllerActionInvoker.<>c__DisplayClass15.<InvokeActionMethodWithFilters>b__12()
 at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func`1 continuation)
 at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func`1 continuation)
 at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func`1 continuation)
 at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodWithFilters(ControllerContext controllerContext, IList`1 filters, ActionDescriptor actionDescriptor, IDictionary`2 parameters)
 at System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName)

Ya revise la configuración del MSDTC en ambos servidores y todo está bien, dónde más podría estar fallando, gracias por la ayuda.

asked 31 Mar '15, 18:08

Erick%20T%C3%BAchez's gravatar image

Erick Túchez
210657168
accept rate: 37%

edited 01 Apr '15, 17:02

Fernando%20Paz's gravatar image

Fernando Paz ♦♦
17.3k81635


Fundamentalmente el error se da por las siguientes causas:

  1. No está levantado el servicio MSDTC en ambos servidores.

  2. No está configurado el acceso remoto en la configuración del MSDTC en ambos servidores. Network DTC Access

  3. Si se utiliza un firewall, se tienen que habilitar los puertos de salida y entrada del MSDTC en ambos servidores

  4. Los servidores no se ven usando NetBIOS. ESTO SE LOGRA SI AMBOS SERVIDORES ESTÁN EN EL MISMO DOMINIO. Hasta el momento no hemos logrado que dos servidores en diferente dominio intervengan en una transacción distribuida.

Finalmente, aquí hay algunos links de cómo diagnosticar problemas con el DTC.

link

answered 01 Apr '15, 17:13

Fernando%20Paz's gravatar image

Fernando Paz ♦♦
17.3k81635
accept rate: 51%

edited 01 Apr '15, 17:14

Tengo entendido que no debe marcarse la sección de Client and Administration. Se resolvió despues de reiniciar el WCF en la configuración del sitio Workflow y dar purge a las colas (este último no creo que tenga que ver pero igual se deshabilitó el log de las colas)

(06 Apr '15, 19:45) Jimy Tobar ♦♦ Jimy%20Tobar's gravatar image
Your answer
toggle preview

Follow this question

By Email:

Once you sign in you will be able to subscribe for any updates here

By RSS:

Answers

Answers and Comments

Markdown Basics

  • *italic* or _italic_
  • **bold** or __bold__
  • link:[text](http://url.com/ "title")
  • image?![alt text](/path/img.jpg "title")
  • numbered list: 1. Foo 2. Bar
  • to add a line break simply add two spaces to where you would like the new line to be.
  • basic HTML tags are also supported

Evolution en BitBucket

En este sitio puede acceder al código fuente, centro de descargas y reportar bugs, propuestas y mejoras para Evolution.

Evolution en JIRA

En este sitio puedes sugerir nueva funcionalidad para Evolution, o puedes votar por la funcionalidad ya propuesta por otros usuarios.

Tags:

×83

Asked: 31 Mar '15, 18:08

Seen: 1,862 times

Last updated: 06 Apr '15, 19:45

[Acerca de] [Preguntas Frecuentes] [Privacidad] [Soporte] [Contacto]
Copyright 2013-2018. Asesores en Informática