2010-06-15 21 views
6

Estoy alojando un servicio WCF en IIS7 en Windows Server 08, sp2. El servicio se aloja como su propio sitio web y se expone a través de un punto final NET.TCP. El servicio funciona perfectamente hasta que se emita un comando restart/iisreset.restart/iisreset ¿Deshabilita el protocolo NET.TCP?

Después de reiniciar o iisreset, cuando hago cualquier llamada de servicio, recibo el siguiente error: 'System.ServiceModel.EndpointNotFoundException: El mensaje no pudo ser enviado porque el servicio en la dirección de punto final' net.tcp: // [sitio web]/[nombre_servicio] .svc 'no está disponible para el protocolo de la dirección ..'

El registro de eventos del servidor muestra el siguiente error: 'Se produjo un error al intentar leer y crear una instancia del ProcessHandlerType configurado. Excepción: System.ArgumentException Mensaje: Id. De protocolo desconocido 'NET.TCP'. StackTrace: en System.Web.Hosting.ProcessHost.StartProcessProtocolListenerChannel (String protocolId, IListenerChannelCallback listenerChannelCallback) '

Pregunta: ¿Cómo puedo solucionar esto? ¿Por qué el protocolo NET.TCP está deshabilitado después de iisreset? ¿Es un error? ¿Me falta algo de configuración?

detalles sobre la configuración de IIS: - Server 08 y 08 R2 - Fijaciones: http, net.tcp (808: *) - EnabledProtols: http, net.tcp. - La identidad de la appPool del sitio se establece en un usuario específico.

Código de la muestra disponible aquí: http://drop.io/wcfTcpSampleService

Gracias

+1

Hacky (inaceptable) Solución: Lo puedo hacer funcionar de nuevo si (1) Elimino NET.TCP de EnabledProtocols (2) del sitio iisreset (3) agrego NET.TCP de nuevo a los protocolos EnabledProtocols del sitio. El sitio continúa funcionando hasta que iisreset se emita de nuevo. IIS está haciendo algo cuando agrego NET.TCP a EnabledProtocols que no está sucediendo cuando IIS se inicia cuando NET.TCP ya se ha agregado. –

+0

Cuando esto sucede, ¿cuál es el estado del servicio Net.Tcp Listner? ¿En qué se configura el tipo de inicio del servicio Net.Tcp Listner? ¿Hay algo que indique en los registros de eventos del Sistema o la Aplicación? –

+0

El adaptador Net.Tcp Listener se inicia (tipo de inicio: Automático). El error en el registro de eventos es 'Se produjo un error al intentar leer y crear una instancia del ProcessHandlerType configurado. Excepción: System.ArgumentException Mensaje: Id. De protocolo desconocido 'NET.TCp'. StackTrace: en System.Web.Hosting.ProcessHost.StartProcessProtocolListenerChannel (String protocolId, IListenerChannelCallback listenerChannelCallback) ' –

Respuesta

9

Resuelto. El problema es la distinción entre mayúsculas y minúsculas. En la configuración avanzada de la aplicación web, el campo EnabledProtocols debe estar en minúsculas, es decir, "net.tcp" (esto lo aprendí del soporte de MS).

Supuse (tontamente) que 'NET.TCP' debería estar en mayúsculas debido a la descripción del campo EnabledProtocols ("... añada esos valores, como NET.TCP ...").

El problema extraño y desconocido es por qué funcionaría con 'NET.TCP' la primera vez, pero ese es otro problema.

Gracias por ayudar a todos.

+0

¿Hay algún enlace disponible del soporte de MS relacionado con la distinción entre mayúsculas y minúsculas? – alexandrul

+0

@alexandrul La persona de soporte de MS solo tenía un enlace interno que describía la sensibilidad de mayúsculas y minúsculas. –

+0

Estamos teniendo este problema al ejecutar Windows Server 2012. Cambiar el caso de net.tcp no hizo la diferencia. ¿Alguien mas? – bkstill

0

¿Realmente tiene que hacer un completo IISRESET? Creo que el método recomendado "moderno" cuando se necesita reiniciar completamente una aplicación alojada en la web es reciclar el grupo de aplicaciones de la siguiente manera: iisapp /a <App_Pool_ID> /r (Windows 2003) o appcmd recycle apppool /apppool.name:<App_Pool_Name> (Windows 2008).

+0

Lamentablemente, este servicio se alojará en una máquina a la que muchas personas tendrán acceso y no puedo evitar que realicen iisreset. El problema también ocurre cuando la máquina se reinicia. –

1

¿Se pueden usar diferentes puertos para los protocolos NET.TCP y HTTP?

actualización

En mi PC todo funciona como debería, y me han tratado tanto reinicio y iisreset. He subido en el mismo lugar su proyecto, incluidos los archivos binarios (utilizado Visual Web Developer 2010 Express) y una captura de pantalla de la configuración de IIS. El grupo de aplicaciones está configurado para .NET 4.0 integrado.

iis7 http://www.freeimagehosting.net/uploads/1a727d66ce.png

+0

Tuve este problema al usar los puertos 80 y 8008 para http y 808, 8009, 8089, 9200 para tcp. –

+0

@Kevin ¿puede usted cargar en alguna parte un servicio WCF de muestra para jugar? – alexandrul

+0

agregué un enlace a una ubicación d/l en la pregunta original. –

0

¿Qué versiones de .NET tiene usted (o ha tenido) instalado?

Tuve un problema muy similar al pasar de .NET 4 RC a RTM, ya que los servicios TCP usaban dlls de la instalación de RC (que ya no existían) y hacían que los servicios se detuvieran.

+0

.NET versiones 2.0, 3.0, 3.5. Tanto el servidor 08 como el 08 R2 eran instalaciones completamente nuevas (una VM y una máquina física). –

Cuestiones relacionadas