Meskipun orang-orang menunjukkan layanan tertentu (mis. "Layanan Web Deployment Agent"), ini gagal untuk mengatasi penyebab utama. Jika Anda hanya menonaktifkan layanan yang memicu masalah, kemungkinan itu akan memundurkan kepalanya lagi di masa depan dalam kedok yang sedikit berbeda. Jadi ada baiknya memahami apa yang salah, karena itu mengarah ke perbaikan yang lebih baik.
Masalah ini muncul ketika server aplikasi menginginkan kontrol total port 80. Ini bertentangan dengan fitur Windows yang dirancang untuk memungkinkan beberapa proses menangani permintaan pada port 80. Sangat mungkin untuk memiliki sejumlah proses semua menerima permintaan HTTP pada port 80, karena Windows memiliki mekanisme pengiriman HTTP bawaan. Setiap proses dapat memberi tahu Windows URL mana yang ingin ditangani.
Namun, jika server aplikasi benar-benar mengabaikan ini, maka Anda kembali ke dunia soket sekolah lama yang kurang fleksibel di mana hanya satu proses yang dapat menerima permintaan yang ditujukan untuk port tertentu.
Itu mungkin baik-baik saja - jika Anda benar-benar tidak menginginkan apa pun selain proses tertentu yang menangani permintaan HTTP pada port 80, maka menjadi lumayan untuk menggunakan server aplikasi yang gagal mendukung mekanisme yang lebih fleksibel yang ditawarkan oleh Windows. (Dan beberapa server aplikasi populer memiliki batasan ini. Misalnya, AFAIK, Tomcat tidak dapat bermain dengan baik dengan yang lain, dan bersikeras memiliki port 80 untuk dirinya sendiri. Jadi jika Anda menggunakan server aplikasi orang lain, mungkin tidak praktis untuk sesuaikan untuk menggunakan mekanisme yang disukai.)
Windows berupaya mengakomodasi layanan tidak fleksibel semacam itu dengan tidak mengikat mekanisme pengirimannya ke port 80 hingga sesuatu secara aktif menanyakannya. (Inilah sebabnya Anda awalnya tidak akan melihat masalah pada awalnya, tetapi dapat mengalami masalah ini setelah semacam pembaruan atau perubahan konfigurasi.) Namun mengandalkan ini bukanlah solusi yang sangat solid - Anda pada dasarnya percaya pada keberuntungan bahwa tidak ada apa-apa mencoba mendengarkan di bawah port 80 sebelum server aplikasi Anda diluncurkan. (Ada beberapa alasan mengapa suatu proses spekulatif mencoba mendaftar untuk URL tertentu pada port 80, dan mundur jika tidak diizinkan.)
Jadi jika Anda ingin satu layanan memiliki akses eksklusif ke port 80, Anda sebaiknya memberi tahu Windows. Tidak cukup baik untuk mencoba mematikan semua layanan yang mungkin mencoba menggunakan mekanisme berbagi port yang biasa, karena sulit untuk yakin bahwa Anda telah menemukan semuanya. (Terutama ketika pembaruan Windows tampaknya mengubah apa yang aktif secara default.) Ini mungkin praktik yang baik untuk menonaktifkan yang Anda ketahui, tetapi yang terbaik untuk mendekati ini dari kedua ujungnya: menonaktifkan layanan yang tidak Anda inginkan, dan juga memastikan bahwa itu bukan mungkin untuk orang yang Anda tidak tahu akan membuat Anda tersandung.
Secara default HTTP.SYS
(mekanisme pengiriman HTTP berbagi port yang mendasarinya di Windows) dapat mendengarkan semua alamat. Tetapi Anda bisa mengatakannya untuk tidak melakukannya. Halaman ini menunjukkan satu cara untuk melakukannya: http://www.mikeplate.com/2011/11/06/stop-http-sys-from-listening-on-port-80-in-windows/
Itu adalah cara yang relatif ringan untuk melakukannya, karena masih memungkinkan mendengarkan di localhost untuk IPv6. Itu hanya membebaskan port IPv4 80. Anda bisa membawanya lebih jauh dengan konfigurasi yang lebih khusus. (Anda bahkan dapat menonaktifkan HTTP.SYS
sepenuhnya, tetapi hal itu dapat merusak hal-hal menggunakan port selain 80, sehingga dapat menyebabkan masalah.)
Tapi apa pun yang Anda lakukan, intinya adalah untuk memastikan bahwa HTTP.SYS
tidak berusaha untuk mendengarkan pada port 80 pada alamat IP yang Anda pedulikan. Setelah Anda selesai melakukannya, Anda tidak perlu khawatir tentang menonaktifkan layanan, Anda juga tidak perlu khawatir tentang perubahan lain yang memperkenalkan kembali masalah. Jika Anda telah memastikan bahwa titik akhir yang Anda butuhkan secara efektif di luar batas untuk berbagi port, maka Anda harus menemukan bahwa proses sistem berhenti mengikat padanya.