“Tidak dapat meluncurkan server Web IIS Express.” di Visual Studio

108

Saya mencoba menjalankan layanan web saya melalui studio visual. Saya menghadapi masalah seperti:

---------------------------
Microsoft Visual Studio
---------------------------
Unable to launch the IIS Express Web server.

Failed to register URL "http://localhost:63591/" for site "xxxxxx" application
"/". Error description: The process cannot access the file because it is being
used by another process. (0x80070020)

---------------------------
OK   
---------------------------

Saya melihat task manager dan menemukan bahwa PID 4 digunakan oleh Sistem dan Deskripsi nya. NT Kernel & System. Jadi saya mencoba menghentikan http service. Semua layanan ketergantungan dihentikan. Tapi saya menghadapi masalah dalam menghentikan layanan http seperti

The service is starting or stopping.  Please try again later.

Jadi, saya mencoba berhenti dan memulai layanan secara manual. Tetapi proses End dinonaktifkan. Akan sangat membantu jika ada yang bisa membantu mengatasi masalah ini

Priya
sumber
1
melihat masalah setelah memperbarui Windows 10: developercommunity.visualstudio.com/content/problem/580466/…
Xiao

Jawaban:

131

Dari https://www.davidsalter.co.uk/unable-to-launch-the-iis-express-web-server-error-0x80070020/

Kode kesalahan 0x80070020berarti ERROR_SHARING_VIOLATION, yang dalam kasus IIS Express (atau IIS) berarti bahwa port yang berusaha untuk mendengarkan sedang digunakan oleh proses lain.

Gunakan netstatperintah untuk mengetahui aplikasi mana yang menggunakan port.

netstat -ao | findstr <port_number_to_search_for>

The aparameter memberitahu netstat untuk menampilkan semua koneksi dan port mendengarkan.

The oparameter memberitahu netstat untuk menampilkan ID proses yang berhubungan dengan koneksi.

Menjalankan perintah netstat di atas akan menghasilkan keluaran seperti:

C:\>netstat -ao | findstr 4026
TCP    12.0.0.1:4026        cs-pc:4026         LISTENING       9544

Nomor terakhir yang ditampilkan (9544 di sini) adalah ID proses.

Chris Schiffhauer
sumber
11
Jawaban yang bagus! Anda tidak hanya menjelaskan solusinya, Anda juga menyertakan arti parameternya. Saya berharap semua jawaban seperti ini!
Christian Payne
8
Ini membantu saya, dan ternyata PID yang menyinggung adalah Chrome.exe. Saya memulai ulang Chrome, dan masalahnya hilang.
astrosteve
1
Jawaban yang bagus. Dengan menggunakan ini saya menemukan bahwa skype sedang mendengarkan pada kedua port 80 dan port 443. Saya mematikan skype dan kemudian dapat meluncurkan iisexpress seperti biasa, sekarang menunjukkan binding ekstra saya untuk port 80 dan 443
Alastair
3
dijalankan di jendela cmd yang ditinggikan, TASKKILL /PID 2756 /Fganti 2756dengan ID proses Anda
stackoverfloweth
13
Ini dapat dibuat jauh lebih cepat dengan -nsakelar juga - ini menggunakan keluaran "numerik", yang berarti tidak membuang waktu untuk menanyakan DNS untuk menyelesaikan alamat IP menjadi nama host.
Tullo_x86
52

Saya mengalami masalah serupa ketika mencoba menjalankan proyek dari Visual Studio 2019 di Windows 10. Aplikasi tidak dapat dimulai karena port tampaknya sedang digunakan oleh proses lain. Namun, netstatperintah tersebut menunjukkan bahwa port tersebut tidak digunakan oleh aplikasi apa pun.

Setelah menghabiskan 2 hari Googling saya menemukan solusi yang berhasil untuk saya. Porta yang saya coba gunakan berada dalam kisaran port yang dikecualikan yang dapat Anda lihat dengan menjalankan perintah:

netsh interface ipv4 show excludedportrange protocol=tcp

Penyebab yang memesan port ini dalam kasus saya adalah Docker untuk Windows dan Hyper-V

Solusinya

Saya menghapus Docker (karena saya tidak membutuhkannya) dan menonaktifkan Hyper-V. Untuk menonaktifkan Hyper-V: Buka: Control Panel-> Program dan Fitur-> Hidupkan atau matikan fitur Windows. Hapus centang Hyper-V dan nyalakan ulang komputer.

Setelah restart, perintah netsh interface ipv4 show excludedportrange protocol=tcpmenunjukkan tidak ada port yang dicadangkan.

Saya kemudian menambahkan port untuk aplikasi saya ke rentang port yang dikecualikan dengan menjalankan perintah berikut dari baris perintah yang ditinggikan:

netsh int ipv4 add excludedportrange protocol=tcp startport=50403 numberofports=1 store=persistent

Kemudian saya mengaktifkan kembali Hyper-V (Docker dapat diinstal ulang jika diperlukan) dan memulai ulang komputer lagi.

Hyper-V sekarang mencadangkan portnya tanpa mengganggu port yang digunakan oleh aplikasi saya: Reserved Port Ranges

Philip Trenwith
sumber
Ini berfungsi untuk saya, kecuali saya membutuhkan Docker jadi saya hanya menonaktifkannya saat memulai daripada mencopotnya.
cderrick
3
Saya akhirnya mengubah port saya keluar dari kisaran yang dikecualikan .. tetapi INI menghemat banyak waktu. Terima kasih.
Cory
2
Seperti @Cory saya mengubah port saya di vs menjadi sesuatu di luar rentang, kesal karena sekarang saya harus mengubah aplikasi referensi setiap kali saya melakukan ini tetapi lebih baik daripada restart penuh.
Nick Rubino
Saya mencari ini selama bertahun - tahun . Saya bertanya-tanya apakah ada cara untuk menentukan dengan tepat aplikasi apa yang mencuri port saya? Terima kasih.
Simon Mourier
Menonaktifkan Hyper-V dan mem-boot ulang memperbaikinya untuk saya
Kyle Burkett
30

Saya memiliki masalah yang sama. Saya baru saja memulai ulang Visual Studio dan berhasil.

MusicAndCode
sumber
1
Komputer saya telah dimulai ulang dari pembaruan dan netstat tidak menunjukkan proses menggunakan port. Ini hanya solusi yang berhasil. Terima kasih!
goodies4uall
1
harus me-restart mesin saya juga
Mahmoud Hboubati
Secara mengejutkan memulai ulang Visual Studio (2017) bekerja dengan baik untuk saya. Terima kasih!
Thomas Gassmann
Dalam kasus saya, kotak Windows 10 saya berwarna biru, dan saya harus reboot dua kali . Proyek situs web lain bekerja dengan baik (port lokal berbeda), dan tidak ada jawaban lain di sini yang berfungsi. Mengubah port untuk proyek juga tidak memperbaikinya. Harus ada beberapa konfigurasi lain di IIS Express itu sendiri.
Granger
Sepertinya ini terjadi pada saya setiap kali saya menjalankan proyek di VS 2019 dengan debugging menggunakan F5, kemudian mencoba menjalankannya tanpa debugging menggunakan Ctrl + F5 yang mana saat itu gagal. Restart memperbaikinya, meskipun saya berharap saya benar-benar dapat mencegahnya terjadi di tempat pertama.
pwhe23
28

Saya memiliki masalah yang sama. Seperti yang disebutkan oleh @Kautsky Lozano di atas, aplikasi lain menggunakan port tersebut.

Jadi [untuk OS Windows]:

  • Open Resource Monitor (Manajer Tugas -> Performa -> Open Resource Monitor)
  • Klik pada tab Jaringan .
  • Dan di TCP Connections temukan aplikasi yang menggunakan Port Lokal yang IIS Express gunakan dan tutup. (itu firefox dalam kasus saya)
Zoti
sumber
Bekerja dengan sempurna!
Al Belmondo
12

Saya mengalami masalah yang sama setelah kami meningkatkan solusi dari Visual Studio 2012 ke 2015. Saya datang ke sini dan berlari netstathanya untuk menemukan bahwa tidak ada aplikasi lain yang menggunakan port yang sama. Ternyata aku punya situs yang sama dengan port yang sama dipetakan di applicationhost.configdi Users/<username>/Documents/IISExpress/configdan applicationhost.configdi .vsfolder dalam solusi saya. Saya harus mencatat bahwa masalahnya juga tidak dimulai tepat setelah peningkatan. Itu baru saja mulai gagal secara konsisten suatu pagi. Beberapa reboot tampaknya juga tidak menyelesaikan masalah.

Menghapus situs yang berkonflik dari situs yang disimpan di Dokumen saya dan memulai ulang Visual Studio memecahkan masalah.

Steve Haselschwerdt
sumber
Ini membantu saya: applicationhost.configada di .vs\configfolder di bawah folder solusi Anda.
Erik Oppedijk
6

Jika netstat tidak menampilkan apa pun yang sudah menggunakan port

netstat -ano | findstr <your port number>

Port mungkin dikecualikan, coba perintah ini untuk melihat apakah jangkauan diblokir oleh sesuatu yang lain:

netsh interface ipv4 show excludedportrange protocol=tcp

Anda dapat mencoba membuka blokir rentang dari port awal untuk sejumlah port (perlu Command Prompt dengan Administrator):

netsh int ip delete excludedportrange protocol=tcp numberofports=<number of ports> startport=<start port>

Bagi saya, saya tidak dapat membuka blokir ini, saya hanya mendapat "Akses ditolak", jadi saya akhirnya harus memilih port lain untuk situs saya.

John Leonard
sumber
3

Saya baru saja mengalami masalah ini meskipun netstat tidak menunjukkan konflik apa pun.

Hal berikut memperbaikinya untuk saya:

  1. Tutup Visual Studio
  2. Buka File Explorer
  3. Arahkan ke folder proyek yang melanggar
  4. Hapus folder obj dan bin
  5. Hapus file * .user (ini mungkin opsional)
  6. Mulai ulang Visual Studio dan coba lagi
AaronK
sumber
3

Setelah memperbarui Windows 10 dan / atau Visual Studio 16+ itu mungkin terjadi karena bug internal yang IISExpress gagal untuk mendaftarkan situs web pengembangan karena tidak lagi menerima localhostkoneksi.

Untuk memperbaiki masalah ini, Anda hanya perlu mendaftar kembali pengikatan. Untuk melakukannya, jalankan dari shell administratif dengan perintah berikut:

netsh http add iplisten ipaddress=:: 
Yennefer
sumber
2

Saya mengalami masalah ini saat memutakhirkan proyek MVC . Saya menyalin lebih baru-MVC .csproj ke file .csproj saya yang ada kemudian bekerja kembali ke Proyek yang berfungsi penuh. Yang gagal saya pertimbangkan adalah nomor port yang ada di .csproj lama. Proyek baru memiliki nomor port baru, namun berbagi Nama Proyek / Majelis. Itu cukup untuk membuat IIS Express kehilangan akal dan membuang pengecualian ini.

Hanya menggali nomor port lama dari git dan mengubah URL IIS Express untuk memasukkannya ke dalam Pengaturan Proyek sudah cukup untuk memperbaikinya.

Chris Moschini
sumber
2

Langkah pertama yang paling mudah dalam hal ini tanpa masuk ke konsol perintah adalah dengan menutup semua aplikasi (termasuk VS), lalu meluncurkan VS dengan sendirinya dan mencobanya lagi. Sepertinya ada aplikasi lain seperti browser Anda yang menyebabkan konflik. Dalam kasus saya, Chrome yang menyebabkannya dan diselesaikan saat mematikan semuanya dan memulai ulang VS. Saya membuka Chrome lagi dan semuanya baik-baik saja.

Hal-hal netstat di atas berguna, tetapi bagi saya itu hanya jika Anda tidak dapat melakukan apa yang saya sarankan.

singleTrackVale
sumber
2

untuk meringkas semua jawaban. Ada 2 solusi. Keduanya bekerja untuk saya. - Solusi # 1 Bunuh aplikasi yang menggunakan port yang sama. - Solusi # 2 Konfigurasi IIS Express untuk menggunakan port yang berbeda untuk proyek Anda.

Solusi # 1 (misalkan port dalam pesan kesalahan adalah 443) Jalankan di baris perintah:

netstat -ao | findstr 443

ia mengembalikan: TCP 0.0.0.0:443 pe01:0 LISTENING 2904 Angka terakhir (berkat @ chris-schiffhauer) adalah PID untuk dibunuh. Pergi ke Task Manager -> Proses -> [Tampilkan Proses Dari Semua pengguna], Hentikan proses dengan PID = 2904. Dalam kasus saya, itu adalah host VmWare.

Solusi # 2 (Misalkan pesannya adalah: Gagal mendaftarkan URL " http: // localhost: 433 / " untuk situs "MyProject.Website0" ... ). Buka file berikut di notepad ++: C:\Users\MY_USER_NAME\Documents\IISExpress\config\applicationhost.configTemukan di dalamnya baris yang berisi:

<site name="MyProject.Website0" id="...
...
            <bindings>
                <binding protocol="http" bindingInformation="*:80:localhost" />
                <binding protocol="https" bindingInformation="*:443:localhost" />
            </bindings>

Ubah 433ke yang lain, seperti 4330atau hapus <binding.../>tag yang bentrok .

epox
sumber
2

Dalam kasus saya, melakukan hal berikut melakukan triknya:

  • Hapus Situs dari .vs \\ config \ applicationhost.config
  • Hapus Situs dari Documents \ IISExpress \ config \ applicationhost.config
  • Hapus IISUrl dari .csproj

Ketika saya me-restart Visual Studio, itu memberi proyek nomor port yang sama sekali baru dan berjalan dengan sempurna

djeastm
sumber
2

Nomor port tidak cocok

Dalam kasus saya, masalahnya ada di Tag Bindings saya yang ditemukan di file konfigurasi di .vs di bawah folder solusi saya, nomor port tidak cocok. Bindingnya adalah sebagai berikut

<bindings>
     <binding protocol="http" bindingInformation=":16433:localhost" />
</bindings>

Dan dalam pengaturan saya, saya menetapkan url sebagai http://localhost:1943/

Jadi yang saya lakukan adalah menghapus pengikatan di dalam dan menjalankan aplikasi web saya, lalu menghasilkan pengikatan baru dengan nomor yang berbeda lalu saya menyalin port yang baru dibuat ke pengaturan saya, lalu kesalahan hilang.

Siphamandla Hero Ngwenya
sumber
Kali ini (saya pernah mengalami masalah ini sebelumnya, ini adalah salah satu dari banyak penyebab yang disajikan dalam berbagai jawaban di sini) ini adalah penyebabnya.
speciesTidak Diketahui
1

Saya dapat memperbaiki masalah ini dengan menghapus semuanya dari <site>hingga </site>tag di

Users/<username>/Documents/IISExpress/config/applicatiohost.config mengajukan

<sites>
  <site>
     .
     .   ===> remove this content including the <site> and </site> tags.
     .
  </site>
</sites>
nPcomp
sumber
1

Setelah menghabiskan setengah hari untuk mencoba memperbaiki masalah yang sama ini, saya merasa saya harus menambahkan solusi yang pada akhirnya berhasil untuk saya.

TL; DR Jika netstatmenunjukkan bahwa masalah tidak digunakan, masih coba beberapa lainnya dalam kisaran yang sama sekali berbeda

Saya pernah mengalami masalah ini sebelumnya tetapi biasanya menemukan memulai ulang studio visual, mengubah port (selisih 1) atau me-reboot melakukan triknya. Namun pada kesempatan ini tidak ada yang membantu, dan netstattidak menemukan proses yang bertentangan. Saya bahkan menginstal ulang IIS dan studio visual serta menghapus beberapa program lain yang saya curigai dapat mengganggu. Sepertinya IIS mencoba meluncurkan beberapa contoh dari situs yang sama.

Akhirnya saya mencoba lari netstattanpa findstr. Saya secara visual memindai daftar port aktif dan memperhatikan bahwa meskipun yang saya coba tidak terdaftar, ada beberapa proses yang menggunakan port dalam kisaran yang sama. Jadi sebagai gantinya saya mencari rentang yang gratis, memilih nomor port dan tampaknya sekarang berfungsi.

Saya ingin mendengar apakah ada yang bisa menjelaskan mengapa ini mungkin berhasil?

Phil
sumber
Solusi ini juga memperbaikinya untuk saya.
Rastographics
1

Saya mengalami masalah ini di Visual Studio 2019 hari ini dan menghabiskan 3 jam sebelum akhirnya mencari tahu masalahnya. Visual Studio menggunakan 2 file untuk melacak nomor port SSL, jadi Anda harus memperbaiki keduanya dan Anda harus memperbaiki keduanya saat Visual Studio ditutup. Kedua file tersebut adalah file applicationhost.config yang ada di folder .vs \ ??? \ config dari solusi Anda; dan juga folder .csproj.user dari proyek web Anda. Edit kedua file dan hapus konfigurasi yang melanggar. Bahkan mungkin hanya menghapus kedua file tersebut. Kemudian buka kembali aplikasi Anda di Visual Studio. Semoga berhasil!

Rob Kraft
sumber
Jika solusi Anda berisi situs web kuno biasa (bukan aplikasi web) maka nomor port juga ada dalam file solusi
.sln
1
  1. Tutup studio visual
  2. hapus folder ".vs"
  3. Coba ubah port "localhost: 8080"

Itu berhasil untuk saya.

Ömer Güngör
sumber
1

Saya mengikuti instruksi @ Zoti dan menggunakan Resource Monitor untuk menemukan port yang dimaksud.

Ternyata Outlook telah secara acak diberi port untuk saluran komunikasinya. Moral dari ceritanya, bisa jadi apa saja.

Greg B
sumber
1

Alasan kesalahan ini adalah Anda memberikan nomor port yang salah ke aplikasi Anda.

just use http ports for your application to run

gunakan port mendekati angka 8080, yaitu:

localhost: 8090

untuk mengubah port untuk aplikasi Anda di visual-Studio

goto project properties > web > Server > ProjectUrl

Talha Rafique
sumber
0

Saya sudah mencoba yang berikut ini:

  • Memulai ulang Visual Studio
  • Periksa semua port yang tersedia yang mungkin mendengarkan nomor spesifik saya tetapi selalu mengembalikan hasil nol. Tidak ada proses yang mendengarkan di port saya.
  • Saya juga mencoba menggunakan ini tetapi tidak ada hasil.

    netstat -aon | temukan ": 80"

  • Saya juga mencoba menggunakan tetapi juga mengembalikan hasil nol.

    netstat -ao | findstr

Jadi yang saya lakukan adalah menghapus " Microsoft.VsHub.Server.HttpHostx64.exe " ini kemudian proyek saya berhasil dimulai dan diluncurkan di browser. Kesalahan telah diperbaiki. Saya tidak yakin mengapa tetapi berhasil.

Ini tangkapan layarnya:

masukkan deskripsi gambar di sini

Willy David Jr
sumber
0

Saya memiliki masalah yang sama tetapi masalah tersebut teratasi ketika saya memulai ulang menggunakan hak istimewa admin. (Mungkin baru saja restart)

Vaibhav Garg
sumber
0

Saya mengalami masalah yang sama hari ini, dan tidak ada yang berhasil saya temukan di internet. Saya telah menggunakan port 2057 selama bertahun-tahun, tetapi tiba-tiba itu tidak berfungsi lagi. Menggantinya ke nomor rendah lain seperti 2058 memberikan pesan kesalahan yang sama, tetapi ketika saya mengubahnya ke 20057, semuanya berfungsi kembali. Mungkin ada yang berubah dengan cara penanganan nomor port yang lebih rendah.

Bogi lenvig
sumber
0

IIS Express Gagal Memulai Solusi di Visual Studio

  • Buka Pengelola Tugas
  • Cari Proses "Application Frame Host"
  • Akhiri Proses ini
  • Coba Jalankan Lagi
Qamar Zaman
sumber