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

Este artículo le ayuda a resolver problemas al ejecutar un servicio de Microsoft .NET Framework 4 basado en Windows Communication Foundation (WCF) 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 cuelgue.

Versión del producto original:   .NET Framework 4.5
Número 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).
  • Este servicio WCF se hospeda mediante Internet Information Services (IIS) 7.0 o una versión posterior de IIS.

En este escenario, el servicio WCF deja de responder ocasionalmente a las solicitudes.

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 manualmente, automáticamente o modificando el archivo de configuración de la aplicación mientras se ejecuta la aplicación.

Cuando se produce el reciclaje de un grupo de aplicaciones, la configuración predeterminada permite iniciar un nuevo proceso de trabajo durante el cierre del proceso anterior. En raras situaciones, una condición de carrera puede hacer que el servicio de uso compartido de puertos net.tcp detenga el procesamiento de solicitudes. En este punto, 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 no permitir los reciclajes superpuestos. Para ello, establece la siguiente configuración avanzada en true para ese grupo de aplicaciones:

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

Obtenga más información sobre el reciclaje del grupo de aplicaciones y otras opciones en Managing, tuning, and configuring application pools in IIS 7.0.