Tengo un WinForms /WCF /SQLServer aplicación, donde estoy tratando de usar MSDTC transacciones como este:

using System.Transactions;

//...

var transOptions =
    new TransactionOptions
    {
        IsolationLevel = IsolationLevel.ReadCommitted,
        Timeout = TimeSpan.FromSeconds(120)
    };

using (var scope = new TransactionScope(TransactionScopeOption.Required,
         transOptions))
{
    //...

    if (everything_is_ok)
        scope.Complete();
}

En mi dev. cuadro, donde el servidor y el cliente, los procesos están en la misma máquina, funciona bien. Pero cuando voy a implementar para el control de calidad env, donde el servidor y el cliente están en máquinas separadas, siempre que scope.Complete() se llama, el cliente se bloquea para el período de tiempo de espera (2 minutos) y luego me sale:

La fluía de la transacción no pudo ser deserializar. El siguiente
excepción: la Comunicación con el administrador de transacción subyacente
ha fallado.

Lo que puede causar esto?

OriginalEl autor JoelFan | 2011-09-01

4 Comentarios

  1. 9

    Pasé unas cuantas horas de hoy tratando de resolver este problema en Windows 7. Finalmente, se trabajó, esto es lo que hice:

    1. Habilitar MSDTC y permitir la entrada/de salida de transacciones (a través del Panel de Control)
    2. La guía para la apertura de los puertos a través del registro – sólo tienes que seguir la guía de
    3. Permiten a los puertos definidos en (2) estar abierto en el firewall (en el caso de utilizar uno)
    4. Permitir MSDTC a través del firewall de windows – agregar una nueva regla para las conexiones entrantes a msdtc.exe (debe estar en la carpeta %systemroot%\system32)

    Este es tal vez no es la mejor solución, pero en realidad la única que funcionó en mi caso.

    EDIT: Después de que otro problema con el MSDTC en Windows 7 SP1 me enteré de que hay dos cosas que usted necesita hacer para hacer que funcione.

    1. Agregar al archivo de hosts de una asignación entre el IP y el nombre NetBIOS de la
      servidor.
    2. Agregar (o modificar) dos claves en HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\RPC:
      «RestrictRemoteClients»=dword:00000000
      «EnableAuthEpResolution»=dword:00000000

    OriginalEl autor Konrad

  2. 1

    Como una nota más en MSDTC, ver lo que la ficha configuración de Seguridad para MSDTC se ha puesto en el servidor, y asegúrese de que su máquina local coincide con eso. Me encontré con un problema que metió de mí por un tiempo hasta que hice esto, y se encontró que el servidor espera sin autenticación, pero mi máquina local estaba configurado para la autenticación mutua.

    OriginalEl autor GuyWithDogs

Dejar respuesta

Please enter your comment!
Please enter your name here