Buen día, quiero reportar un problema que me esta generando Evolution en la implementación de un cliente con windows server 2012 R2
Actualmente poseo un servidor de base de aplicación y un servidor de base de datos.
El problema es causado al momento de tratar de generar los reportes estáticos o conjuntos de datos entre otros.
La versión que tiene instalada es la 1.9.0.2
Investigando acá en el foro, encontré que algunas instrucciones que realizar,
sin embargo todo lo realizado no ha resuelto el problema.
- Se corroboró que los servidores puedan verse por su nombre via NetBios (ambos pertenecen a la misma red)
- Se configuro el msdtc en ambos servidores como lo indica la presentación de instalación.
- Se verifico que los servicios estuvieran habilitados
- El Firewall esta deshabilitado en ambos servidores, sin embargo tiene las reglas para alojar los servicios dtc.
- Se modifico el archivo hosts para colocar la ip y el nombre del servidor (en ambos servidores)
- El antivirus que ocupan es el McAfee y el administrador de red, lo deshabilito para ambos servidores.
- los puertos del sql estan habilitados.
Quisiera que alguien pueda apoyarme para indicarme que mas puedo hacer para resolver este problema, entiendo que si la comunicación no sirve para los reportes, tampoco funcionará para la generación de planillas entre otros.
La acción 'DescargarConsultaGenerada' del controlador 'ConsultasExcel' ha lanzado la excepción 'EntityException' con el mensaje: The underlying provider failed on Open.
System.Data.Entity.Core.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.Entity.Infrastructure.Interception.InternalDispatcher`1.Dispatch[TTarget,TInterceptionContext](TTarget target, Action`2 operation, TInterceptionContext interceptionContext, Action`3 executing, Action`3 executed)
at System.Data.Entity.Infrastructure.Interception.DbConnectionDispatcher.Open(DbConnection connection, DbInterceptionContext interceptionContext)
at System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.<>c__DisplayClass1.<Execute>b__0()
at System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute[TResult](Func`1 operation)
at System.Data.Entity.Core.EntityClient.EntityConnection.Open() --- End of inner exception stack trace ---
at System.Data.Entity.Core.EntityClient.EntityConnection.Open()
at System.Data.Entity.Core.Objects.ObjectContext.EnsureConnection(Boolean shouldMonitorTransactions)
at System.Data.Entity.Core.Objects.ObjectContext.ExecuteInTransaction[T](Func`1 func, IDbExecutionStrategy executionStrategy, Boolean startLocalTransaction, Boolean releaseConnectionOnSuccess)
at System.Data.Entity.Core.Objects.ObjectQuery`1.<>c__DisplayClass7.<GetResults>b__5()
at System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute[TResult](Func`1 operation)
at System.Data.Entity.Core.Objects.ObjectQuery`1.GetResults(Nullable`1 forMergeOption)
at System.Data.Entity.Core.Objects.ObjectQuery`1.<System.Collections.Generic.IEnumerable<T>.GetEnumerator>b__0()
at System.Data.Entity.Internal.LazyEnumerator`1.MoveNext()
at System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable`1 source)
at System.Data.Entity.Core.Objects.CompiledQuery.ExecuteQuery[TResult](ObjectContext context, Object[] parameterValues)
at System.Data.Entity.Core.Objects.CompiledQuery.Invoke[TArg0,TArg1,TResult](TArg0 arg0, TArg1 arg1)
at Aseinfo.Infrastructure.Repositories.MetadataRepository.GetEntidadAuditoria(String entityName) in c:\VH4\Infrastructure\Data\MetadataRepository.cs:line 256
at Aseinfo.Infrastructure.Services.MetadataService.GetEntidadAuditoria(String entityName) in c:\VH4\Infrastructure\Services\Metadata\MetadataService.cs:line 345
at Aseinfo.Infrastructure.Services.CustomValidationService.<>c__DisplayClassc.<FilterCapableEntityChangeEntriesOnSavedChanges>b__7(String esn) in c:\VH4\Infrastructure\Services\CustomValidation\CustomValidationService.cs:line 143
at System.Collections.Generic.List`1.ForEach(Action`1 action)
at Aseinfo.Infrastructure.Services.CustomValidationService.FilterCapableEntityChangeEntriesOnSavedChanges(List`1 entries) in c:\VH4\Infrastructure\Services\CustomValidation\CustomValidationService.cs:line 150
at Aseinfo.Infrastructure.Data.ConfigDataContext.DataContextSavedChanges(Object sender, EventArgs e) in c:\VH4\Infrastructure\DataAccess\EF\SqlServer\Model\ConfigDataContext.cs:line 204
at System.EventHandler.Invoke(Object sender, EventArgs e)
at Aseinfo.Infrastructure.Data.ConfigDataContext.SaveChanges(SaveOptions options) in c:\VH4\Infrastructure\DataAccess\EF\SqlServer\Model\ConfigDataContext.cs:line 96
at Aseinfo.Infrastructure.Base.Entity.EntityServiceBase`2.SaveChanges() in c:\VH4\Infrastructure\Base\Entity\EntityServiceBase.cs:line 557
at Aseinfo.Infrastructure.Controllers.ConsultasExcelController.AgregarErrorEnBitacoraEjecucion(ConsultaExcel consulta, List`1 qbFields, String errorMessage, String stackTrace, ResultadoEjecucionReporte resultadoEjecucion) in c:\VH4\Infrastructure\Controllers\ConsultasExcelController.cs:line 1740
at Aseinfo.Infrastructure.Controllers.ConsultasExcelController.DescargarConsultaGenerada(Int32 codigo, DateTime fecha, String titulo, String subtitulo, List`1 qbFields, Boolean mostrandoEnDialogo) in c:\VH4\Infrastructure\Controllers\ConsultasExcelController.cs:line 539
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.Async.AsyncControllerActionInvoker.<BeginInvokeSynchronousActionMethod>b__39(IAsyncResult asyncResult, ActionInvocation innerInvokeState)
at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult`2.CallEndDelegate(IAsyncResult asyncResult)
at System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3d()
at System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<>c__DisplayClass46.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3f()
at System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<>c__DisplayClass46.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3f()
at System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<>c__DisplayClass46.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3f()
at System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<>c__DisplayClass46.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3f()
at System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<>c__DisplayClass46.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3f()
at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass33.<BeginInvokeActionMethodWithFilters>b__32(IAsyncResult asyncResult)
at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass21.<>c__DisplayClass2b.<BeginInvokeAction>b__1c()
at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass21.<BeginInvokeAction>b__1e(IAsyncResult asyncResult)
vos el registro en el archivo del hosts lo tenes comentado por que iniciaste la línea con el caracter #
Lo edite, pero tampoco funcionó, probaré con lo que indica Sabanito.
Para aclarar un poco en que contexto se genera este error y porque sucede en la generación de reportes, el problema se dá al momento de querer grabar en la bitácora de ejecución de un reporte.
Al intentar guardar esta información se llega al problema de que alguno de los servidores involucrados (SQL o WebServer) no tienen bien configurado el MSDTC o no cumplen con los requisitos para que funcione.