Aunque las personas señalan servicios específicos (por ejemplo, el "Servicio del Agente de implementación web"), esto no aborda la causa raíz. Si solo deshabilita los servicios que desencadenan el problema, es probable que en el futuro vuelva a tener la cabeza en una forma marginalmente diferente. Por lo tanto, vale la pena entender qué está mal, porque eso conduce a una mejor solución.
Este problema surge cuando un servidor de aplicaciones quiere el control total del puerto 80. Esto entra en conflicto con una característica de Windows que está diseñada para permitir que múltiples procesos manejen solicitudes en el puerto 80. Es completamente posible tener cualquier cantidad de procesos que reciban solicitudes HTTP en el puerto 80, porque Windows tiene un mecanismo de despacho HTTP incorporado. Cada proceso puede decirle a Windows qué URL quiere manejar.
Sin embargo, si un servidor de aplicaciones ignora esto por completo, entonces estás de vuelta en el mundo de los sockets menos flexibles de la vieja escuela donde solo un proceso puede recibir solicitudes destinadas a un puerto en particular.
Eso puede estar bien: si realmente no desea nada más que un proceso particular que maneja la solicitud HTTP en el puerto 80, entonces es tolerable usar un servidor de aplicaciones que no sea compatible con los mecanismos más flexibles que ofrece Windows. (Y algunos servidores de aplicaciones populares tienen esta limitación. Por ejemplo, AFAIK, Tomcat es incapaz de jugar bien con otros e insiste en tener el puerto 80 solo. Por lo tanto, si está utilizando el servidor de aplicaciones de otra persona, puede ser poco práctico para adaptarlo para usar el mecanismo preferido.)
Windows intenta acomodar estos servicios inflexibles al no vincular su mecanismo de envío al puerto 80 hasta que algo lo solicite activamente. (Es por eso que no necesariamente verá un problema inicialmente, pero puede encontrarse con este problema después de algún tipo de actualización o cambio de configuración). Pero confiar en esto no es una solución muy sólida: esencialmente confía en la suerte de que nada intenta escuchar bajo el puerto 80 antes de que se inicie su servidor de aplicaciones. (Hay varias razones por las que un proceso podría intentar especulativamente registrarse para ciertas URL en el puerto 80 y retroceder si no está permitido).
Entonces, si desea que un servicio tenga acceso exclusivo al puerto 80, será mejor que le diga a Windows. No es lo suficientemente bueno como para intentar desactivar todos los servicios que podrían intentar utilizar el mecanismo habitual de uso compartido de puertos, porque es difícil confiar en que los haya encontrado a todos. (Particularmente cuando las actualizaciones de Windows parecen cambiar lo que está activado de manera predeterminada). Probablemente sea una buena práctica deshabilitar las que conoce, pero es mejor abordar esto desde ambos extremos: deshabilite los servicios que no desea y también asegúrese de que no posible para los que no sabías que te podrían hacer tropezar.
De forma predeterminada HTTP.SYS
(el mecanismo de envío HTTP de uso compartido de puertos subyacente en Windows) puede escuchar en todas las direcciones. Pero puedes decir que no lo haga. Esta página muestra una forma de hacerlo: http://www.mikeplate.com/2011/11/06/stop-http-sys-from-listening-on-port-80-in-windows/
Esa es una forma relativamente ligera de hacerlo, porque todavía permite escuchar en localhost para IPv6. Simplemente libera el puerto 80 de IPv4. Podría llevarlo más lejos con una configuración más especializada. (Incluso podría deshabilitarlo por HTTP.SYS
completo, pero eso podría romper cosas usando puertos que no sean 80, por lo que puede causar problemas)
Pero haga lo que haga, lo importante es asegurarse de que HTTP.SYS
no intente escuchar en el puerto 80 en la dirección IP que le interesa. Una vez que haya hecho eso, no necesita preocuparse por deshabilitar los servicios, ni debe preocuparse por otros cambios que reintroducen el problema. Si se ha asegurado de que el punto final que necesita esté efectivamente fuera de los límites para el uso compartido de puertos, entonces debe encontrar que el proceso del sistema deja de vincularse a él.