Falta del servicio Net.Tcp Listener Adapter en Windows Server 2022 – solución completa

Cuando migras una aplicación WCF 4.8 a Windows Server 2022 puedes llevarte la desagradable sorpresa de que el servicio Net.Tcp Listener Adapter no existe en services.msc. Sin este adaptador la activación de extremos net.tcp:// simplemente no ocurre y la aplicación se queda sin atender solicitudes TCP. A continuación encontrarás una guía exhaustiva para comprender el porqué, instalar lo que falta y verificar que todo vuelve a funcionar.

Índice

Causas habituales de la ausencia del servicio

  • Características de WCF incompletas. La casilla genérica de “WCF Services” no activa los componentes de escucha para protocolos distintos de HTTP.
  • WAS deshabilitado. Windows Process Activation Service es el orquestador de todos los adaptadores de escucha no HTTP.
  • Configuraciones heredadas de seguridad que desinstalan NetTcpPortSharing o lo ponen en Disabled.
  • Imagen base minimalista. Algunas plantillas de nube eliminan servicios “inútiles” para ahorrar memoria.

Visión rápida de los componentes implicados

ComponentePapel dentro de WCF
Net.Tcp Listener Adapter (SMSvcHost.exe)Recibe peticiones TCP entrantes y las entrega a WAS.
NetTcpPortSharingPermite que varios procesos compartan un mismo puerto TCP.
WAS (Windows Process Activation Service)Arranca los servicios hospedados (IIS o self‑hosted) cuando llega una solicitud.
IIS Role – Application Development → WCF ServicesInstala handlers y modules para WCF en IIS.

Característica exacta que crea Net.Tcp Listener Adapter

La confusión proviene de que el nombre visible en Server Manager es “Non‑HTTP Activation” dentro de las características de WCF 4.8. Esa casilla instala simultáneamente:

  • SMSvcHost.exe y el servicio Net.Tcp Listener Adapter.
  • Net.Pipe Listener Adapter y Net.Msmq Listener Adapter.
  • Dependencias de WAS necesarias para la activación.

Resumido en una línea de PowerShell

Install-WindowsFeature NET-WCF-TCP-Activation45 -IncludeAllSubFeature

Guía paso a paso: método gráfico

  1. Abre Server Manager  →  Add roles and features.
  2. Tipo de instalación: Role-based or feature-based.
  3. Selecciona tu servidor y marca:
    • Web Server (IIS)Application DevelopmentWCF ServicesTCP Port Sharing.
    • .NET Framework 4.8 FeaturesWCF ServicesNon‑HTTP Activation.
    • Windows Process Activation ServiceProcess Model y Configuration APIs.
  4. Confirma e instala. Si pide reinicio, acepta.
  5. Abre services.msc, localiza Net.Tcp Listener Adapter, establece Startup Type = Automatic y arráncalo.

Guía paso a paso: método por PowerShell

Install-WindowsFeature `
    Web-Server,                 # IIS básico
    Web-App-Dev,                # Application Development
    Web-WCF-Services,           # WCF IIS bindings
    AS-TCP-Port-Sharing,        # TCP Port Sharing
    NET-Framework-48-Features,  # .NET 4.8 core
    NET-WCF-Services45,         # WCF Services 4.5+
    NET-WCF-TCP-Activation45    # Non‑HTTP (TCP) activation
-IncludeAllSubFeature -IncludeManagementTools

El conmutador -IncludeAllSubFeature evita que olvides dependencias. La instalación dura un minuto aproximado y no interrumpe sesiones RDP.

Comprobaciones posteriores a la instalación

  • Servicios: verifica que Net.Tcp Listener Adapter y NetTcpPortSharing estén en ejecución.
  • Puertos: ejecuta netstat -ano | find ":808" (o tu puerto configurado) para confirmar el estado LISTENING.
  • Registros de eventos: bajo Applications and Services Logs → Microsoft → Windows → WCF-Activation no deben aparecer errores de tipo ServiceActivationException.

Firewall y seguridad

El adaptador escucha, por defecto, en el puerto 808. Si tu servidor solo expone el 80/443 externamente, añade una regla entrante:

New-NetFirewallRule -DisplayName "Net.Tcp 808" `
    -Direction Inbound -Protocol TCP -LocalPort 808 -Action Allow

Si decides mover el servicio a otro puerto, recuerda actualizar los bindings en el archivo applicationHost.config o en tu .config de servicio WCF y repetir la regla de firewall.

Permisos y cuentas de servicio

NetTcpPortSharing se ejecuta bajo NT SERVICE\NetTcpPortSharing. Al instalar desde cero, esta cuenta ya posee los privilegios necesarios. Sin embargo, si previamente se endureció la plantilla mediante políticas GPO pueden faltar derechos SeServiceLogonRight. Para restaurarlos:

ntrights +r SeServiceLogonRight -u "NT SERVICE\NetTcpPortSharing"

Escenario de pruebas rápidas

  1. Crea un servicio WCF de prueba con el asistente de Visual Studio (WCF Service Application).
  2. Configura una única dirección net.tcp://localhost:808/Calculator.
  3. Publica el sitio en IIS.
  4. Ejecuta la herramienta Test Client o un simple script PowerShell: $proxy = New-Object System.ServiceModel.ChannelFactory[ [System.ServiceModel.Channels.IRequestChannel]]( (New-Object System.ServiceModel.NetTcpBinding()), "net.tcp://localhost:808/Calculator") $channel = $proxy.CreateChannel() $channel.Open()
  5. Si los mensajes fluyen, la cadena de activación funciona.

Resolución de problemas avanzada

El servicio aparece pero no arranca

Revisa Event ID 7023 – Service Control Manager. Los códigos 0x80131700 indican que no encuentra el CLR 4.8; reinstala NET-Framework-48-Core.

Conflicto de puertos

Aplicaciones de copias de seguridad o antivirus a veces ocupan el 808. Usa Get-NetTCPConnection -State Listen para identificar el PID y cámbialo en el registro:

Set-ItemProperty `
  -Path 'HKLM:\SOFTWARE\Microsoft\SMSvcHost\Parameters' `
  -Name TcpPort -Value 818

Acceso denegado al crear tuberías

Cuando la ACL de \\.\pipe\iisipm o \\.\pipe\NetTcpPortSharing\* se corrompe, elimina los permisos antiguos y concede de nuevo:

icacls \\.\pipe\NetTcpPortSharing\* /grant "NT SERVICE\NetTcpPortSharing:(R,W)"

Preguntas frecuentes

¿Puedo instalar solo el adaptador Net.Tcp sin IIS?

Sí. Basta con NET-WCF-TCP-Activation45 y WAS-Process-Model. Sin embargo, perderás las facilidades de administración de IIS.

¿El adaptador soporta TLS 1.3?

El protocolo TCP genérico no cifra. La seguridad viene de Transport Security con SSL/TLS. A partir de KB5021131 Windows Server 2022 habilita TLS 1.3 si el canal lo negocia.

¿Cómo escalo puertos dinámicos en puertos altos?

Agrega rangos en el registro HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters, valores MaxUserPort y TcpTimedWaitDelay.

Checklist de validación final

  • Características Non‑HTTP Activation y TCP Port Sharing instaladas.
  • Servicios Net.Tcp Listener Adapter y NetTcpPortSharing iniciados.
  • Puerto escuchando y accesible desde el exterior.
  • Sin errores críticos en el visor de eventos de WCF.
  • Prueba de cliente WCF conecta correctamente.

Conclusión. El 99 % de los problemas de “desaparición” del servicio Net.Tcp Listener Adapter se resuelven instalando la característica Non‑HTTP Activation junto con WAS y habilitando TCP Port Sharing. Sigue la guía anterior y tu hospedaje WCF volverá a funcionar sin reescribir código ni reinstalar todo el servidor.

Índice