El servicio net. TCP de WCF deja de responder debido a una condición de carrera

Este artículo le ayuda a resolver problemas cuando ejecuta un servicio de Windows Communication Foundation (WCF) basado en Microsoft .NET Framework 4 que usa el servicio de uso compartido de puertos net. TCP (Smsvchost.exe). En concreto, una condición de carrera hace que el servicio WCF se bloquee.

Versión del producto original:   .NET Framework 4,5
Número de KB original:   3017663

Síntomas

Imagine la siguiente situación:

  • Tiene instalado un servicio WCF que usa el servicio net. TCP.
  • Use el servicio de uso compartido de puertos net. TCP (SmSvchost.exe).
  • Puede hospedar este servicio WCF mediante Internet Information Services (IIS) 7,0 o una versión posterior de IIS.

En este escenario, el servicio WCF deja de responder a las solicitudes de vez en cuando.

Causa

Una condición de carrera se produce ocasionalmente cuando se recicla el grupo de aplicaciones de IIS para un servicio WCF net. TCP. Este reciclaje se puede desencadenar de forma manual, automáticamente o modificando el archivo de configuración de la aplicación mientras la aplicación se está ejecutando.

Cuando se recicla un grupo de aplicaciones, la configuración predeterminada permite que se inicie un nuevo proceso de trabajo durante el cierre del proceso anterior. En raras ocasiones, una condición de carrera puede provocar que el servicio de uso compartido de puertos net. TCP deje de procesar las solicitudes. En este momento, debe reiniciar el servicio de uso compartido de puertos net. TCP.

Solución

Use el administrador de IIS para configurar el grupo de aplicaciones del servicio WCF para impedir los reciclamientos superpuestos. Para ello, establezca la siguiente configuración avanzada en true para ese grupo de aplicaciones:

  • Deshabilitar el reciclaje superpuesto.
  • Deshabilitar reciclaje para cambios de configuración.

Obtenga más información sobre el reciclaje del grupo de aplicaciones y otras opciones para administrar, ajustar y configurar grupos de aplicaciones en IIS 7,0.