Iniciar sesión con Microsoft
Iniciar sesión o crear una cuenta
Hola:
Seleccione una cuenta diferente.
Tiene varias cuentas
Elija la cuenta con la que desea iniciar sesión.

Síntomas

Después de instalar el paquete acumulativo de actualizaciones de calidad y seguridad de julio de 2018 para .NET Framework, que se aplica a .NET Framework 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1 y 4.7.2 para Windows 7 Service Pack 1 (SP1), Windows Server 2008 R2 SP1 o Windows Server 2008 SP2, detectará errores en las aplicaciones de .NET Framework que cumplan los siguientes criterios:

  • La aplicación utiliza instancias de la clase System.Transaction.TransactionScope en las que el flujo de transacción se habilita mediante el paso de TransactionScopeAsyncFlowOption.Enabled al constructor.

  • La aplicación realiza una o más llamadas remotas mientras uno de estos ámbitos de transacción está activo. En este caso, una llamada remota es cualquier llamada que viaje a través de un proxy transparente antes de alcanzar el objeto servidor. Algunos ejemplos de llamadas remotas son las llamadas a otros dominios de aplicación y las realizadas a través de canales remotos, como los canales de cliente definidos en los espacios de nombres System.Runtime.Remoting.Channels.

  • Después de la llamada remota, System.Transactions.Transaction.Current devuelve un valor nulo en vez del valor que devolvía antes de la llamada remota.

Solución alternativa

Para evitar este problema, pruebe cualquiera de los métodos siguientes.

  • Para cada ámbito de transacción que habilite flujo de transacciones, cambie la aplicación para asegurarse de que no se producen llamadas remotas en ninguna parte del código que se ejecute mientras el ámbito de transacción está activo. A la hora de determinar si un ámbito de transacción contiene alguna llamada remota, tenga en cuenta las siguientes directrices:

    • Una llamada a un método estático no es nunca una llamada remota.

    • En el caso de una llamada a un método de instancia en un objeto de destino, la llamada es remota solo si el objeto de destino es un proxy transparente.

    • En el caso de una llamada a un constructor, la llamada es remota solo si el objeto construido es un proxy transparente.

    Nota Siempre puede utilizar el método System.Runtime.Remoting.RemotingServices.IsTransparentProxy para comprobar si un objeto es un proxy transparente.

  • Deshabilite el flujo de transacción eliminando el argumento TransactionScopeAsyncFlowOption.Enabled del constructor. 

    Advertencia

    Es probable que esta solución alternativa cause otros errores si se ejecuta cualquier operación "await" mientras el ámbito de transacción está activo.

  • La propiedad Transaction.Current no se serializa automáticamente para la llamada remota. Debe pasarse como un parámetro. Si la llamada remota no pasa la transacción como un parámetro y no realiza una devolución de llamada al cliente durante la llamada, puede crear la llamada remota dentro de un nuevo objeto TransactionScope que utilice la opción TransactionScopeOptions.Suppress. Dentro de este ámbito de transacción Suppress, la propiedad Transaction.Current tiene valor nulo.

Estado

Somos conscientes de este problema y estamos trabajando para solucionarlo.

¿Necesita más ayuda?

¿Quiere más opciones?

Explore las ventajas de las suscripciones, examine los cursos de aprendizaje, aprenda a proteger su dispositivo y mucho más.

Las comunidades le ayudan a formular y responder preguntas, enviar comentarios y leer a expertos con conocimientos extensos.

¿Le ha sido útil esta información?

¿Cuál es tu grado de satisfacción con la calidad del lenguaje?
¿Qué ha afectado a su experiencia?
Si presiona Enviar, sus comentarios se usarán para mejorar los productos y servicios de Microsoft. El administrador de TI podrá recopilar estos datos. Declaración de privacidad.

¡Gracias por sus comentarios!

×