Saya mencoba menguji situs web yang saya jalankan dalam contoh IISExpress lokal dengan beberapa mesin / perangkat lain di jaringan lokal saya. Saya menjalankan Win7 Pro.
Ketika saya pertama kali mencoba menjelajah ke komputer saya dari komputer lain di segmen jaringan lokal saya, saya mendapatkan kesalahan 400: Nama host tidak valid.
Saya mengerti bahwa saya perlu memberikan akses jarak jauh ke ACL dengan perintah pada prompt perintah yang ditinggikan seperti:
netsh http add urlacl url=http://mymachinename:50333/ user=everyone
Sekarang saya mendapatkan layanan 503 kesalahan tidak tersedia.
Windows Firewall saat ini dimatikan, dan saya dapat menelusuri contoh IISExpress lokal saya dengan alamatnya http://localhost:50333
Apa bagian terakhir dari puzzle konfigurasi ini?
sumber
http://mymachinename:50333/
dari komputer Anda ?Jawaban:
Sepertinya Anda kehilangan entri informasi yang mengikat dalam file applicationhost.config.
Buka file applicationhost.config Anda. Lokasi yang mungkin adalah:
%userprofile%\Documents\IISExpress\config\applicationhost.config
$(solutionDir)\.vs\config\applicationhost.config
(VS2015)iisexpress.exe
untuk memastikan.Temukan entri WebSite Anda dan tambahkan ikatan berikut dengan nama mesin Anda.
Mulai ulang IIS Express
sumber
iisexpress.exe
hati-hati untuk melihat file konfigurasi yang digunakan.Hanya ada 1 hal yang berhasil untuk saya.
menggunakan
*:portnumber:*
itu tidak baik. Ya, setelah melakukan itu dan memastikan Windows Firewall terbuka, saya dapat terhubung ke port, tetapi saya masih mendapatkan kesalahan "503".Saya menguji beberapa hal secara lokal, dan menemukan bahwa hanya http: // localhost yang berfungsi. Menggunakan alamat IP asli (bukan 127.0.0.1, tetapi, misalnya, 192.168.1.50), masih mengembalikan 503 bahkan pada mesin lokal. Saya mencoba menggunakan nama host asli di binding, tetapi IIS Express menolak untuk memulai. Ini mungkin sebenarnya ada hubungannya dengan bagaimana nama host sedang diselesaikan. Saya tidak mengeksplorasi lebih jauh.
Akhirnya, saya akhirnya menggunakan konfigurasi ini:
Dengan cara itu, saya dapat terhubung dari mesin jarak jauh menggunakan
http://192.168.1.50:53351
.sumber
<binding protocol="https" bindingInformation="*:44300:*" />
<binding protocol="http" bindingInformation="*:8888:*" />
edit: benar-benar mencoba memahami SO markdown, saya berhenti :).Setelah menghabiskan lebih dari 3 jam pada subjek penuh saya memutuskan untuk berbagi pengaturan saya dengan Anda. Konfigurasi saya adalah Visual Express 2012 untuk pembaruan Web 4 di windows 8. Ini adalah pertama saya kembali ke MS VS sejak studi (setidaknya 8 tahun) dan sekarang saya yakin bahwa aturan linux. Pada Django, pengaturan seperti ini membutuhkan waktu 10 menit untuk mencari dokumentasi.
matikan firewall untuk pengujian
setel binding dalam alamat lokal saya adalah localIP = 192.168.1.102 (karena tautan tidak dapat berisi domain nonnumerik, gunakan di bawah ini sebagai ganti mylocaldomain.com, lihat kebijakan stackoverflow) di
Documents\IISExpress\config\applicationhost.config
tambahkan autorun untuk layanan mulai ISS Express secara otomatis
Tambahkan beberapa aturan aneh ke server http (saya masih tidak tahu apakah ini perlu)
jalankan IISExpress secara manual bukan dari VS IDE
http://mylocaldomain.com:53351
jika berfungsi maka kita bisa menambahkan aturan firewalltambahkan aturan firewall
atur remoteip ke apa pun jika Anda ingin mengakses server Anda dari dunia luar jika Anda ingin mengakses untuk jaringan lokal gunakan subnet lokal
mulai firewall
periksa lagi apakah semuanya berfungsi pada ip lokal dan publik
Semoga beruntung
Rafal
sumber
netsh http delete urlacl url=http://*:55416/
(ganti port dengan port Anda)localhost
. Saya menemukan bahwa nama mesin guest (Windows) harus ada di bindingapplicationhost.config
, dan pada host (Mac) nama mesin guest perlu dipetakan127.0.0.1
masuk/etc/hosts
. Baru saat itulah permintaan ke mesin tamu pada tuan rumah berhasil.Menemukan masalah berkaitan dengan pemetaan urlacl yang buruk. Untuk mengetahuinya:
dan cari hal-hal seperti
http://+:80/
atau port yang Anda ikat.Lalu gunakan
Ini memperbaiki masalah bagi saya.
sumber
netsh http delete urlacl <yoururl>
Tidak ada yang berhasil untuk saya. Akhirnya saya menemukan iisexpress-proxy
Lihat jawaban saya https://stackoverflow.com/a/33623399/631527
Solusi lain adalah
ngrok
sumber
3028
. Saya berlariiisexpress-proxy 3028 to 12345
lalu./ngrok.exe http 12345
. 😅Apa yang membantu saya, adalah mengklik kanan ikon 'IISExpress', 'Tampilkan Semua aplikasi'. Kemudian memilih situs web dan saya melihat aplicationhost.config yang digunakannya, dan koreksi berjalan dengan sempurna.
sumber
Masalahnya adalah memperbarui file applicationhost.config di dalam folder web alih-alih solusi. File konfigurasi solusi adalah yang harus diubah
sumber
Setelah solusi @vikomall jangan lupa untuk memulai VS sebagai administrator. Ini perbaiki untuk saya.
sumber
Mengenai jawaban Anthony Rizzolo: di Windows 8.1, saya harus mengetik seperti ini:
Sebagai contoh:
sumber
Tidak ada jawaban di atas yang berfungsi untuk saya.
Saya memiliki dua entri di netsh untuk layanan yang sama
netsh http show urlacl
Satu menggunakan wildcard yang kuat, yang lain menggunakan wildcard yang lemah.
Menghapus satu dengan wildcard yang lemah melakukan pekerjaan.
Lebih lanjut tentang wildcard yang kuat dan lemah dalam konteks netsh
https://docs.microsoft.com/en-gb/windows/desktop/Http/urlprefix-strings
sumber