Sebbene le persone stiano segnalando servizi specifici (ad es. "Web Deployment Agent Service"), ciò non riesce ad affrontare la causa principale. Se disabiliti solo i servizi che innescano il problema, è probabile che in futuro si rialzerà di nuovo in modo leggermente diverso. Quindi vale la pena capire cosa non va, perché questo porta a una soluzione migliore.
Questo problema si presenta quando un server delle applicazioni desidera il controllo totale della porta 80. Ciò è in conflitto con una funzionalità di Windows progettata per consentire a più processi di gestire le richieste sulla porta 80. È del tutto possibile avere un numero qualsiasi di processi che ricevono tutte richieste HTTP sulla porta 80, perché Windows ha un meccanismo di invio HTTP incorporato. Ogni processo può dire a Windows quali URL vuole gestire.
Tuttavia, se un server delle applicazioni lo ignora totalmente, allora sei di nuovo nel mondo dei socket della vecchia scuola meno flessibile in cui solo un processo può ricevere richieste destinate a una determinata porta.
Questo potrebbe andare bene - se davvero non vuoi altro che un particolare processo che gestisca la richiesta HTTP sulla porta 80, allora diventa tollerabile usare un server delle applicazioni che non supporta i meccanismi più flessibili offerti da Windows. (E alcuni server di app popolari hanno questa limitazione. Ad esempio, AFAIK, Tomcat non è in grado di giocare bene con gli altri e insiste per avere la porta 80 tutta per sé. Quindi, se stai usando l'app server di qualcun altro, potrebbe non essere pratico adattalo per usare il meccanismo preferito.)
Windows tenta di accogliere tali servizi non flessibili non vincolando il suo meccanismo di invio alla porta 80 fino a quando qualcosa non lo richiede attivamente. (Questo è il motivo per cui inizialmente non vedrai necessariamente un problema, ma puoi imbatterti in questo problema dopo una sorta di aggiornamento o modifica della configurazione.) Ma fare affidamento su questa non è una soluzione molto solida - stai essenzialmente confidando nella fortuna che niente tenta di ascoltare sotto la porta 80 prima dell'avvio del server delle app. (Esistono vari motivi per cui un processo potrebbe tentare in modo speculativo di registrarsi per determinati URL sulla porta 80 e arretrare se non è consentito.)
Quindi, se si desidera che un servizio abbia accesso esclusivo alla porta 80, è meglio dirlo a Windows. Non è abbastanza buono per tentare di disattivare tutti i servizi che potrebbero tentare di utilizzare il solito meccanismo di condivisione delle porte, perché è difficile essere sicuri di averli trovati tutti. (Soprattutto quando gli aggiornamenti di Windows sembrano cambiare ciò che è attivo per impostazione predefinita.) Probabilmente è buona pratica disabilitare quelli che conosci, ma è meglio avvicinarsi a questo da entrambe le estremità: disabilitare i servizi che non si desidera e assicurarsi che non sia possibile per quelli che non sapevi per farti inciampare.
Per impostazione predefinita HTTP.SYS
(il meccanismo di invio HTTP di condivisione porta sottostante in Windows) è in grado di ascoltare su tutti gli indirizzi. Ma puoi dirlo di no. Questa pagina mostra un modo per farlo: http://www.mikeplate.com/2011/11/06/stop-http-sys-from-listening-on-port-80-in-windows/
Questo è un modo relativamente leggero per farlo, perché consente ancora l'ascolto su localhost per IPv6. Libera la porta IPv4 80. Potresti andare oltre con una configurazione più specializzata. (Potresti anche disabilitare del HTTP.SYS
tutto, ma ciò potrebbe rompere le cose usando porte diverse da 80, quindi potrebbe causare problemi.)
Ma qualunque cosa tu faccia, il punto è assicurarti che HTTP.SYS
non tenti di ascoltare sulla porta 80 sull'indirizzo IP che ti interessa. Una volta che lo hai fatto, non devi preoccuparti di disabilitare i servizi, né devi preoccuparti di altre modifiche che reintroducono il problema. Se ti sei assicurato che l'endpoint di cui hai bisogno sia effettivamente fuori dai limiti per la condivisione delle porte, allora dovresti scoprire che il processo di sistema smette di legarsi ad esso.