Pregunta

¿Es esta incluso una pregunta válida?Tengo una aplicación .NET de Windows que usa MSTDC y arroja una excepción:

System.Transactions.TransactionManagerCommunicationException:Se ha deshabilitado el acceso a la red para Distributed Transaction Manager (MSDTC).Habilite DTC para el acceso a la red en la configuración de seguridad para MSDTC utilizando la herramienta administrativa de Servicios de Componentes ---> System.Runtime.inTeropServices.COMException (0x8004d024):El administrador de transacciones ha deshabilitado su soporte para transacciones remotas/de red.(Excepción de HRESULT:0x8004d024) en System.transactions.oletx.idtcproxyshimfactory.reCeivetransaction (uint32 propgationTokensize, byte [] propgationToken, intptr managedIdentifier, guía y identificación de transacciones, oletXtransactSolationLevel e Isollevel, Itransactionshimshim) ...

Seguí la guía de Kbalertz para habilitar MSDTC en la PC en la que está instalada la aplicación, pero el error persiste.

Me preguntaba si se trataba de un problema de base de datos.Si es así, ¿cómo puedo solucionarlo?

No hay solución correcta

Otros consejos

Utilice esto para Windows Server 2008 r2 y Windows Server 2012 R2

  1. Hacer clic Comenzar, haga clic Correr, tipo dcomcnfg y luego haga clic DE ACUERDO abrir Servicios de componentes.

  2. En el árbol de la consola, haga clic para expandir Servicios de componentes, haga clic para ampliar Ordenadores, haga clic para ampliar Mi computadora, haga clic para ampliar Coordinador de Transacciones Distribuidas y luego haga clic DTC locales.

  3. Botón derecho del ratón DTC locales y haga clic Propiedades para mostrar el Propiedades de DTC locales caja de diálogo.

  4. Haga clic en el Seguridad pestaña.

  5. Marca de verificación "Acceso a DTC de red" caja.

  6. Finalmente marca de verificación "Permitir entrada" y "Permitir salida" casillas de verificación.

  7. Hacer clic Aplicar, DE ACUERDO.

  8. Aparecerá un mensaje sobre reiniciando el servicio.

  9. Hacer clic DE ACUERDO y eso es todo.

Referencia : https://msdn.microsoft.com/en-us/library/dd327979.aspx

Nota: A veces, el firewall de la red en la computadora local o el servidor podría interrumpir su conexión, así que asegúrese de crear reglas para "Permitir entrada" y "Permitir salida" conexión para C:\Windows\System32\msdtc.exe

¿Necesita siquiera MSDTC?La escalada que está experimentando a menudo se debe a la creación de múltiples conexiones dentro de un único TransactionScope.

Si lo necesita, debe habilitarlo como se describe en el mensaje de error.En XP:

  • Vaya a Herramientas administrativas -> Servicios de componentes
  • Expanda Servicios de componentes -> Computadoras ->
  • Haga clic derecho -> Propiedades -> pestaña MSDTC
  • Presione el botón Configuración de seguridad

Descubrí que la mejor manera de depurar es usar la herramienta de Microsoft llamada DTCP

  1. Copie el archivo tanto en el servidor (DB) como en el cliente (servidor de aplicaciones/pc cliente)
    • Inícielo en el servidor y el cliente.
    • En el servidor:complete el nombre de la computadora netbios del cliente e intente configurar una conexión DTC
    • Reinicie ambas aplicaciones.
    • En el cliente:complete el nombre de la computadora del servidor netbios e intente configurar una conexión DTC

He tenido problemas con mi tarifa en la red de nuestra antigua empresa y tengo algunos consejos:

  • Si recibe el mensaje de error "Error en Gethostbyname", significa que la computadora no puede encontrar la otra computadora por su nombre netbios.El servidor podría, por ejemplo, resolver y hacer ping al cliente, pero eso funciona a nivel de DNS.No en un nivel de búsqueda de netbios.Usar servidores WINS o cambiar el LMHOST (sucio) resolverá este problema.
  • Si recibe el error "Acceso denegado", la configuración de seguridad no coincide.Debe comparar la pestaña de seguridad de msdtc y hacer que el servidor y el cliente coincidan.Otra cosa a tener en cuenta es la Restringir clientes remotos valor.Dependiendo de la versión de su sistema operativo y, lo que es más importante, del Service Pack, este valor puede ser diferente.
  • Otros problemas de conexión:
    • El firewall entre el servidor y el cliente debe permitir la comunicación a través del puerto 135.Y lo que es más importante, la conexión se puede iniciar desde ambos sitios (tuve muchos problemas con la gente del firewall de mi empresa porque asumieron que solo el servidor abriría una conexión a ese puerto)
    • El protocolo devuelve un puerto aleatorio al que conectarse para la comunicación de transacción real.A la gente del firewall no le gusta eso, les gusta restringir los puertos a un rango determinado.Puede restringir la generación del puerto dinámico RPC a un cierto rango usando las claves como se describe en Cómo configurar la asignación dinámica de puertos RPC para trabajar con firewalls.

En mi experiencia, si DTCPing puede configurar una conexión DTC iniciada desde el cliente y desde el servidor, sus transacciones ya no son el problema.

También puede ver aquí sobre cómo activar MSDTC desde services.msc del Panel de control.

En el servidor donde reside el disparador, debe activar el servicio MSDTC.Puede hacerlo haciendo clic en INICIO > CONFIGURACIÓN > PANEL DE CONTROL > HERRAMIENTAS ADMINISTRATIVAS > SERVICIOS.Encuentre el servicio llamado 'Coordinador de transacciones distribuidas' y haga clic derecho (en él y seleccione)> Inicio.

MSDTC debe estar habilitado en ambos sistemas, tanto en el servidor como en el cliente.
Además, asegúrese de que no haya un firewall entre los sistemas que bloquee RPC.
Prueba DTC es una pequeña y agradable aplicación que te ayuda a solucionar cualquier otro problema.

@dan,

¿No necesito MSDTC habilitado para que funcionen las transacciones?

Solo transacciones distribuidas: aquellas que involucran más de una conexión.Asegúrese doblemente de abrir solo una conexión dentro de la transacción y no aumentará: el rendimiento también será mucho mejor.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top