Tidak dapat memulai situs di IIS (digunakan dengan proses lain)

96

Ketika saya mencoba untuk memulai situs di IIS dikatakan:

proses tidak dapat mengakses file karena digunakan oleh proses lain

Saya mencari di Google dan menemukan bahwa situs lain mungkin telah menggunakan Port 80 tetapi di MyIIS saya melihat bahwa hanya situs ini yang menggunakan Port 80. Apa lagi yang bisa menggunakan Port 80 atau ada masalah lain yang terlibat?

hichris123
sumber
restart sistem Anda sekali kemudian coba.
عثمان غني
saya melakukannya tetapi terjadi lagi masalah yang sama
1
Coba konfigurasikan IIS untuk dijalankan di port lain. Anda mungkin memiliki server lain yang berjalan di komputer Anda. Ada contoh apache? Ada beberapa worm yang membuka port 80 sebagai pintu belakang pada komputer yang terinfeksi juga.
nunespascal
Teks kesalahan ini tentu saja tidak membantu tetapi jika Anda memeriksa log penampil acara maka ini memberi Anda beberapa petunjuk bahwa ada kesalahan saat mengikat ke port 8080 (digunakan oleh situs web di IIS saya). Di kotak windows 10 saya itu mencatat dua kesalahan dari IIS-W3SVC dan HttpEventsumber. Teks log peristiwa kedua - Unable to bind to the underlying transport for [::]:8080. The IP Listen-Only list may contain a reference to an interface which may not exist on this machine. The data field contains the error number.. Port 8080 sedang digunakan oleh layanan Oracle. Saya mengubah porta yang digunakan oleh situs web saya menjadi 8081.
NSP

Jawaban:

176

Periksa menggunakan netstat -aonatau netstat -aon | findstr 0.0:80dalam prompt perintah untuk melihat Id Proses mana yang MENDENGARKAN ke port: 80 dan kemudian perhatikan Id Proses (PID) itu di Task Manager dengan tampilan-> pilih kolom-> proses id dicentang. Akhiri proses itu, mulai ulang IIS dan Anda selesai. ( Catatan: jika Anda menginstal Skype , coba keluar dari proses itu terlebih dahulu. )

Di Pengelola Tugas modern, Anda harus membuka tab Detail untuk mencari PID. Atau, seperti yang disebutkan oleh @Nikita G di komentar, Anda dapat menggunakan perintah ini untuk menemukan tugas dari command prompt Anda:

tasklist /FI "PID eq 123"

Catatan: ubah 123dengan PID yang dikembalikan dari perintah pertama.

Manoj Purohit
sumber
11
Terima kasih juga atas komentar Skype.
Keith
Skype berjalan pada port 80 dan situs web saya juga dikonfigurasi pada port 80 jadi saya memperbaiki masalah ini dengan keluar dari skype dan kemudian saya mengubah pengaturan skype untuk berjalan pada port 8080. (Tidak wajib untuk Memulai IIS)
Umar Shafeeq
1
Sangat menyenangkan ketika produk Microsoft melawan ... sampai Anda harus terus me-restart komputer Anda ketika Anda menyadari itu terjadi lagi karena alasan yang tidak diketahui dan tidak memiliki tenaga untuk mencari tahu apa penyebabnya (sampai sekarang). Sungguh, sangat menyebalkan.
andyface
10
Berikut cara yang lebih mudah untuk melakukannya. Tampilkan hanya item yang mendengarkan pada port 80: netstat -aon | findstr 0.0:80. Dan kemudian dengan asumsi bahwa pengembalian PID 123, jalankan berikut untuk melihat proses yang yaitu: tasklist /FI "PID eq 123".
Nikita G.
1
Bagi saya, ini adalah OracleServiceXElayanan yang telah menghabiskan port 8080 yang coba diikat oleh situs web baru di server IIIS saya.
RBT
35

Ini terjadi karena proses yang berbeda menggunakan port 80, ini mungkin aplikasi obrolan di PC Anda seperti Skype.

Pertama, ubah port default situs web 80 menjadi port yang tidak digunakan (mis. 8087). Untuk mencapai ini klik kanan aplikasi dan kemudian klik 'Edit Binding'.

masukkan deskripsi gambar di sini

masukkan deskripsi gambar di sini

Setelah port ini berubah, restart lagi. Sekarang Anda dapat mengidentifikasi proses mana yang memblokir IIS Port 80. Untuk memeriksa ini gunakan perintah netstat yang menampilkan detail port bersama dengan ID proses.

Ravindra Bagale
sumber
6
skype adalah masalah saya
nbushnell
sama di sini, skype menggunakan port 80. Nonaktifkan di bawah Opsi -> Lanjutan -> Koneksi -> "Gunakan port 80 dan 442 untuk tambahan ..."
Wagner da Silva
25

Keluar dari Skype dan coba lagi. Saya telah mengalami masalah yang sama dan saya baru saja keluar dari Skype dan kemudian mengatur ulang IIS saya. Itu berhasil untuk saya.

Ovais Mumtaz
sumber
2
Anda dapat mengubah port yang digunakan Skype dari pengaturan
3ventic
10

Anda juga dapat menjalankan perintah ini untuk mencari tahu aplikasi atau layanan mana yang menggunakan port dan kemudian melacaknya di Task manager (Asalkan bukan Web Deploy Agent Service).

netstat -o -n -a | findstr 0.0: 80

Kemudian buka Manajer tugas, masuk ke Proses, klik kotak centang "Tampilkan proses untuk semua pengguna", lalu klik menu Lihat dan Buka Kolom, tambahkan kolom PID.

Cocokkan ID Proses dari perintah netstat ke PID di pengelola tugas dan Anda akan menemukan layanan atau aplikasi yang menggunakan porta tersebut.

Bikey
sumber
2
Jika anda ingin menghindari tugas pembukaan manager, jalankan perintah berikut tepat setelah melihat proses yang yaitu: tasklist /FI "PID eq <PID from netstat (without brackets)>".
Nikita G.
2

Seperti yang dikatakan orang lain, sesuatu yang lain mungkin menggunakan port 80 atau 443. Ini adalah VMWare Workstation Server untuk saya, tetapi periksa jawaban lain untuk cara menggunakan netstat.

solublefish
sumber
1 untuk menyebutkan port 443. Saya menggunakan netstatuntuk memeriksa port 80 dan tidak ada yang ditampilkan. Kemudian Anda menyebutkan port 443 dan itu dia.
jtate
1

Saya pikir tautan ini memberikan penjelasan yang cukup bagus dan memperbaiki masalah ini http://support.microsoft.com/KB/890015

Sebagian besar waktu; ini disebabkan oleh salah satu dari dua alasan: 1) port 80 sedang digunakan oleh hal lain dan seperti yang disarankan oleh orang lain, Anda dapat menggunakan netstat -o -n -a | findstr 0.0: 80 untuk melihat apakah ini masalahnya. Jika ya, maka matikan proses dari pengelola tugas (centang tampilkan proses dari semua pengguna)

2) jika port 80 tidak digunakan, penyebab kedua adalah kemungkinan alamat ip tidak valid di ListenOnlyList yang diajukan di kunci registri HTTP-> Parameter. Jika Anda mengikuti link untuk mengatur kunci secara manual atau sebenarnya Anda dapat menggunakan (xp dan server 2003) httpcfg delete iplisten -i ipaddressuntuk menghapus alamat ip yang tidak valid. Anda harus memulai ulang http setelah Anda mengedit alamat ip!

stt106
sumber
@bummi terima kasih atas komentarnya. Saya telah menambahkan lebih banyak detail sekarang.
stt106
0

Dalam kasus saya, itu adalah " Sync Share Service " (SyncShareSvc) yang berjalan dan menggunakan port 80. netstat menunjukkan 80 sebagai gratis. Saya bisa mendapatkan situs untuk berjalan di port lain, tetapi tidak 80. jika saya menambahkan nama Host, IIS akan memungkinkan saya untuk memulai situs, tetapi saya akan diminta untuk otentikasi Digest saat menjelajah ke localhost (atau nama host saya ditambahkan). Hanya Anonymous dan Forms Auth yang diaktifkan di IIS ...

Saya juga menemukan bahwa, setelah menghentikan IIS, http://localhostmasih meminta saya untuk otentikasi Digest.

Solusinya - dalam kasus saya - adalah menghapus File and Storage Services> Files and iSCSI Services> " Work Folders " dari layanan yang diinstal (diperlukan restart).

Setelah menghapus layanan "Folder Kerja" dan memulai ulang, IIS bekerja seperti yang diharapkan.

Adam Hei
sumber
0

Kasus saya adalah setelah menginstal RD Web Access, situs web default asli tidak dapat dimulai. Menghapus peran RD Web Access masih sama. Mengikat port 443 yang dihapus memecahkan masalah.

Nick
sumber
0

Sering kali ketika ini terjadi oleh pengembang web adalah alasan apache, jadi jika Anda pergi ke file konfigurasi dari apache! buka dan cari dengan ctrl + f menjadi 80 dan ubah ip Anda akan melihat ke 8080 dan kalimat di bawahnya dengan 80 menjadi 8080 dan Anda perlu memastikan bahwa di xampp Anda, atau program yang Anda gunakan saat ini

Semoga saya akan membantu kalian

Arne Schouten
sumber
Pertanyaannya adalah tentang IIS, bukan apache.
C. Helling
1
Ya, tapi 2 program ini mengganggu satu sama lain jadi mungkin saya akan membantu seseorang yang memiliki masalah yang sama seperti yang saya alami
Arne Schouten
0

Untuk mendapatkan informasi yang lebih bermakna, salah satu caranya adalah dengan juga mendapatkan informasi kepemilikan saat menerbitkan netstatsehingga Anda mengetahui prosesnya yang menggunakan 80 (pengikatan http default) atau 443 (jika pengikatan https ditentukan):

 netstat -ab

Dalam kasus saya, pelakunya adalah vmware:

TCP 0.0.0.0:443 ComputerName: 0 MENDENGARKAN
[vmware-hostd.exe]

netstat dapat disalurkan ke find untuk mencari port 80 atau 443 (mis. find ":443"), tetapi koneksi aktif khusus ini akan ditampilkan di awal daftar dan mudah dilihat.

Alexei
sumber