En la version 1.8.2.3 de Evolution de un cliente está pasando que al momento de generar un reporte da el siguiente error:

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)

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.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()
  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.ObjectQuery`1.System.Collections.Generic.IEnumerable<T>.GetEnumerator()
  at System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable`1 source)
  at System.Linq.Queryable.FirstOrDefault[TSource](IQueryable`1 source)
  at Aseinfo.Infrastructure.Base.Entity.EntityServiceBase`2.GetEntityById(IdT id, Expression`1[]     includes) in c:\VH4\Infrastructure\Base\Entity\EntityServiceBase.cs:line 270
  at Aseinfo.VH4.Expedientes.Services.EmpleoRuleValidator.RangoFechasEsValido(Int32 codigoEmpleo, DateTime  fechaInicial, DateTime fechaFinal, Boolean comparaHora, EntityObject entityObject) in c:\    VH4\VH4\Expedientes\Services\Empleos\EmpleoRuleValidator.cs:line 57
  at Aseinfo.VH4.General.Services.Validaciones.ValidadorFechasDisponibles.RangoFechasEsValido(Int32    codigoEmpleo, DateTime fechaInicial, DateTime fechaFinal, Boolean comparaHora, EntityObject entityObject)
  at Aseinfo.VH4.Acciones.Services.IncapacidadRuleValidator.Validate(Incapacidad entity) in  c:\VH4\VH4\Acciones\Services\Incapacidades\IncapacidadRuleValidator.cs:line 181
  at Aseinfo.Infrastructure.Base.Entity.EntityServiceBase`2.DoInsert(T entity, Boolean saveChanges, Boolean bypassWorkflowInitialization) in c:\VH4\Infrastructure\Base\Entity\EntityServiceBase.cs:line 778
  at Aseinfo.VH4.Acciones.Controllers.IncapacidadController.SaveIncapacidad(Incapacidad entity,    Nullable`1 codigoEmpleo, Nullable`1 codigoEmpleoSolicita, Nullable`1 codigoTipo, Nullable`1 codigoRiesgo,   Nullable`1 codigoClinicaMedica, String codigoVisualTipoPlanilla, String codigoVisualPlanilla, Nullable`1  codigoIncapacidadProrrogar, Int32 codigoCompania, Boolean inserting, Nullable`1 iniciaFlujo) in  c:\VH4\VH4\Acciones\Controllers\IncapacidadController.cs:line 633
  at Aseinfo.VH4.Acciones.Controllers.IncapacidadController.Create(Incapacidad entity, Nullable`1  codigoEmpleo, Nullable`1 codigoEmpleoSolicita, Nullable`1 codigoTipo, Nullable`1 codigoRiesgo, Nullable`1  codigoClinicaMedica, String codigoVisualTipoPlanilla, String codigoVisualPlanilla, Nullable`1  codigoIncapacidadProrrogar, Int32 codigoCompania, Nullable`1 iniciaFlujo, DateTime fechaInicio, Nullable`1  fechaFinal) in c:\VH4\VH4\Acciones\Controllers\IncapacidadController.cs:line 332
  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.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)

Este inconveniente también se ha dado al crear incapacidades, lo curioso es que solamente pasa una vez ya que al momento de volver a intentar realizar la acción ya no produce problemas en el día.

asked 25 Nov '14, 14:44

Josue%20Mancilla's gravatar image

Josue Mancilla
(suspended)
accept rate: 42%

edited 25 Nov '14, 22:23

Fernando%20Paz's gravatar image

Fernando Paz ♦♦
17.3k81635

Podrías copiar el texto del error. La imagen no nos sirve para poder identificar en donde sucede el error.

(25 Nov '14, 21:11) Fernando Paz ♦♦ Fernando%20Paz's gravatar image

El error es bien específico:

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)

Esto significa que la comunicación entre los servicios de DTC entre el servidor Web y el servidor de base de datos no se puede realizar por alguna de estas causas:

  • 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
  • the support for network transactions is not enabled for one of the two transaction managers

Hemos encontrado que la causa más común es la tercera. El servicio de DTC debe estar habilitado en ambos servidores (Web y SQL Server) para que reciban transacciones "inbound" y "outbound" con otros servidores.

Si ambos están habilitados, la segunda causa es la más probable. Ambos servidores deben "verse" a través del protocolo NetBIOS; esto se cumple de manera nativa cuando los dos servidores están en el mismo dominio.

Si ambos servidores están en el mismo dominio y el servicio de DTC está habilitando para recibir transacciones vía la red, entonces la causa del firewall es la más probable. Por defecto en los servidores Windows 2012 o superior, el firewall restringe al proceso del DTC para que se comunique vía la red local.

link

answered 25 Nov '14, 22:28

Fernando%20Paz's gravatar image

Fernando Paz ♦♦
17.3k81635
accept rate: 51%

edited 25 Nov '14, 22:29

Fernando, te comento que ya se revisó que el firewall y no lo esta restringiendo, se revisó que los servidores este en el mismo dominio y lo están, se reviso la configuración del DTC para que reciban transacciones inbound y outbound en ambos y si reciben dichas transacciones.

Ahora bien, se detectó que en el servidor de aplicación hubo un cambio en el nombre del servidor, puede ser esto causa del problema?, de ser así que solución hay al mismo?.

(03 Dec '14, 15:06) Josue Mancilla Josue%20Mancilla's gravatar image

Proba hacer ping de un servidor a otro con el nombre del servidor. Si no podes tu problema podría ser:

- the two machines cannot find each other by their NetBIOS names

(03 Dec '14, 15:19) Jimy Tobar ♦♦ Jimy%20Tobar's gravatar image

La solución fue agregar la ip de los servidores en el archivo host que se encuentra en C:WindowsSystem32driversetc en cada uno de los servidores

(09 Dec '14, 18:39) Josue Mancilla Josue%20Mancilla'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:

×44
×19
×2

Asked: 25 Nov '14, 14:44

Seen: 3,185 times

Last updated: 09 Dec '14, 18:39

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