Ketika saya mencoba membuka aplikasi web saya di port 8080, saya mendapatkan kesalahan berikut
Permintaan Buruk - Hostname
HTTP Error 400. Nama host permintaan tidak valid.
Saya bahkan tidak tahu harus mulai dari mana untuk mendiagnosis masalah ini
Jawaban:
Apakah Anda memeriksa pengikatannya adalah IIS? (inetmgr.exe) Mungkin tidak terdaftar untuk menerima semua nama host di 8080.
Misalnya, jika Anda mengaturnya untuk mysite.com:8080 dan menekannya di localhost: 8080, IIS akan mendapatkan permintaan tersebut tetapi tidak memiliki nama host yang mengikat untuk dicocokkan sehingga ditolak.
Di luar itu, Anda harus memeriksa log IIS (C: \ inetpub \ logs \ wmsvc #) di server dan melihat apakah Anda melihat permintaan Anda. Kemudian Anda akan tahu apakah itu masalah pada klien Anda atau pada server itu sendiri.
FWIW, jika Anda hanya ingin mengizinkan permintaan diarahkan ke nama host / ip apa pun, Anda dapat mengatur pengikatan seperti ini:
<binding protocol="http" bindingInformation="*:80:*" />
Saya menggunakan pengikatan ini sehingga saya dapat memuat VM dengan IE6 dan kemudian men-debug aplikasi saya.
EDIT: Saat menggunakan IIS Express untuk men-debug, lokasi default untuk file konfigurasi opsi ini adalah
C:\Users\{User}\Documents\IISExpress\config\applicationhost.config
Halaman ini oleh Microsoft menjelaskan cara mengatur akses ke IIS Server Express dari komputer lain di jaringan lokal.
Pendeknya:
1) dari prompt perintah dengan hak istimewa admin:
netsh http add urlacl url=http://[your ip address]:8181/ user=everyone
2) Di Windows Firewall dengan Keamanan Lanjutan, buat aturan masuk baru untuk port 8181 untuk mengizinkan koneksi eksternal
3) Di applicationhost.config, di node untuk proyek Anda, tambahkan:
<binding protocol="http" bindingInformation="*:8181:[your ip address]" />
JANGAN menambahkan (seperti yang disarankan dalam jawaban lain):
<binding protocol="http" bindingInformation="*:8181:*" />
Pengikatan wildcard di atas memutuskan akses saya http://192.168.1.6:8181/
netsh http delete urlacl url=http://[your ip address]:8181/
Untuk Visual Studio 2017dan Visual Studio 2015, IIS Expresspengaturan disimpan di .vsdirektori tersembunyi dan jalurnya seperti ini .vs\config\applicationhost.config, tambahkan pengikatan seperti di bawah ini akan berfungsi
<bindings>
<binding protocol="http" bindingInformation="*:8802:localhost" />
<binding protocol="http" bindingInformation="*:8802:127.0.0.1" />
</bindings>
<bindings> <binding protocol="http" bindingInformation="localhost:8802:*" /> <binding protocol="http" bindingInformation="127.0.0.1:8802:*"/> </bindings>
Jangan lupa untuk mengikat ke alamat IPv6 juga! Saya mencoba menambahkan situs di 127.0.0.1 menggunakan localhost dan mendapat permintaan buruk / kesalahan nama host tidak valid. Ketika saya melakukan ping ke localhost, itu diselesaikan ke :: 1 karena IPv6 diaktifkan jadi saya hanya perlu menambahkan pengikatan tambahan untuk memperbaiki masalah.
Ini memecahkan masalah saya (maaf untuk bahasa Inggris saya yang buruk):
buka cmd sebagai administrator dan jalankan perintah (Tanpa tanda kurung siku):
netsh http add urlacl url=http://[ip adress]:[port]/ user=everyone
di dalam documents/iisexpress/config/applicationhost.configdan di folder proyek root Anda di folder (tersembunyi): .vs/config/applicationhost.configAnda perlu menambahkan baris ke tag "situs":
<binding protocol="http" bindingInformation="*:8080:192.xxx.xxx.xxx" />
buka "internet information services (iis) manager"
(untuk menemukannya: dalam pencarian di taskbar tulis "Turn Window features on or off" dan buka hasilnya lalu centang kotak "internet information service" dan instal itu):
buka "Windows Firewall With Advanced Security",
selesai.
Saya tidak yakin apakah ini masalah Anda, tetapi untuk siapa saja yang mencoba mengakses aplikasi webnya dari komputernya dan mengalami masalah ini:
Pastikan Anda terhubung ke 127.0.0.1(alias localhost) dan bukan ke alamat IP eksternal Anda.
URL Anda harus seperti http://localhost:8181/atau http://127.0.0.1:8181dan tidak http://YourExternalIPaddress:8181/ .
Saat Anda terhubung ke alamat IP eksternal, Anda terhubung dari internet, seolah-olah Anda adalah orang asing (atau peretas).
Namun ketika Anda terhubung ke localhost Anda, Anda terhubung secara lokal sebagai diri Anda sendiri dan blok tersebut jelas tidak diperlukan (& dihindari sama sekali).
localhost, ini yang dimaksud dengan ( 127.0.0.1). Yang saya katakan adalah terhubung ke itu dan bukan ke IP Anda yang terlihat secara eksternal. Tidak ada ketergantungan pada localhost, itu hanya digunakan sebagai sinonim. Saya akan mengedit jawaban saya untuk membuatnya lebih jelas.
Periksa file host lokal Anda (misalnya C: \ Windows \ System32 \ drivers \ etc \ hosts). Dalam kasus saya, saya sebelumnya menggunakan ini untuk mengarahkan URL ke kotak dev dan kemudian melupakannya. Ketika saya kemudian menggunakan kembali URL yang sama, saya terus mendapatkan Permintaan Buruk (Nama Host Tidak Valid) karena lalu lintas menuju ke server yang salah.
Saya melihat kesalahan yang sama setelah menggunakan msdeploy untuk menyalin aplikasi ke server baru. Ternyata bindings tersebut masih menggunakan alamat IP dari server sebelumnya. Jadi, periksa kembali alamat IP di binding IIS. (Tampak jelas setelah fakta, tetapi tidak segera terpikir oleh saya untuk memeriksanya).