Когда я пытаюсь запустить свое веб-приложение на порт 8080, я получаю следующую ошибку
Неверный запрос - недопустимое имя хоста.
Ошибка HTTP 400. Недействительное имя хоста запроса.
Я даже не знаю, с чего начать диагностику этой проблемы
Ответы:
Вы проверили привязку к IIS? (inetmgr.exe) Возможно, он не будет зарегистрирован для приема всех имен хостов на 8080.
Например, если вы настроите его для mysite.com:8080 и нажмете на localhost: 8080, IIS получит запрос, но не будет иметь привязку имени хоста для сопоставления, поэтому он отклонит.
Кроме того, вы должны проверить журналы IIS (C: \ inetpub \ logs \ wmsvc #) на сервере и посмотреть, видите ли вы свой запрос. Тогда вы узнаете, проблема в вашем клиенте или на самом сервере.
FWIW, если вы хотите просто разрешить запросы, направленные на любое имя хоста / IP, вы можете установить привязку следующим образом:
<binding protocol="http" bindingInformation="*:80:*" />
Я использую эту привязку, чтобы загрузить виртуальную машину с IE6, а затем отладить свое приложение.
РЕДАКТИРОВАТЬ: при использовании IIS Express для отладки расположение по умолчанию для файла конфигурации этого параметра
C:\Users\{User}\Documents\IISExpress\config\applicationhost.config
На этой странице Microsoft описывается, как настроить доступ к IIS Server Express с других компьютеров в локальной сети.
В двух словах:
1) из командной строки с правами администратора:
netsh http add urlacl url=http://[your ip address]:8181/ user=everyone
2) В брандмауэре Windows в режиме повышенной безопасности создайте новое правило для входящего трафика для порта 8181, чтобы разрешить внешние подключения.
3) В applicationhost.config в узле вашего проекта добавьте:
<binding protocol="http" bindingInformation="*:8181:[your ip address]" />
НЕ добавляйте (как было предложено в другом ответе):
<binding protocol="http" bindingInformation="*:8181:*" />
Вышеупомянутая привязка подстановочного знака прервала мой доступ с http://192.168.1.6:8181/
netsh http delete urlacl url=http://[your ip address]:8181/
Для Visual Studio 2017
и Visual Studio 2015
, IIS Express
настройки хранятся в скрытой .vs
директории и путь что - то вроде этого .vs\config\applicationhost.config
, добавить связывание как ниже будет работать
<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>
Не забудьте также привязать к IPv6-адресу! Я пытался добавить сайт на 127.0.0.1, используя localhost, и получил ошибку неверного запроса / недопустимого имени хоста. Когда я pinged localhost, он разрешился на :: 1, поскольку IPv6 был включен, поэтому мне просто пришлось добавить дополнительную привязку, чтобы исправить проблему.
Это решило мою проблему (извините за плохой английский):
откройте cmd от имени администратора и запустите команду (без квадратных скобок):
netsh http add urlacl url=http://[ip adress]:[port]/ user=everyone
в documents/iisexpress/config/applicationhost.config
и в корневой папке проекта в (скрытой) папке: .vs/config/applicationhost.config
вам нужно добавить строку в тег «site»:
<binding protocol="http" bindingInformation="*:8080:192.xxx.xxx.xxx" />
откройте «диспетчер информационных служб Интернета (iis)»
(чтобы найти его: в строке поиска на панели задач напишите «Включить или выключить функции окна» и откройте результат, а затем установите флажок «Информационная служба Интернета» и установите его):
откройте «Брандмауэр Windows в режиме повышенной безопасности»,
сделанный.
Я не уверен, была ли это ваша проблема, но для всех, кто пытается получить доступ к своему веб-приложению со своего компьютера и имеет эту проблему:
Убедитесь, что вы подключаетесь к 127.0.0.1
(он же localhost
), а не к своему внешнему IP-адресу.
Ваш URL должен быть чем - то вроде http://localhost:8181/
или http://127.0.0.1:8181
и не http://YourExternalIPaddress:8181/
.
Когда вы подключаетесь к своему внешнему IP-адресу, вы подключаетесь к вам из Интернета, как если бы вы были незнакомцем (или хакером).
Однако, когда вы подключаетесь к своему локальному хосту, вы подключаетесь локально как вы, и блок, очевидно, не нужен (и его вообще избегают).
localhost
в том, что он имеет в виду ( 127.0.0.1
). Все, что я говорю, это подключайтесь к нему, а не к вашему внешнему IP-адресу. Нет никакой уверенности в localhost, он просто используется как синоним. Я отредактирую свой ответ, чтобы было понятнее.
Проверьте файл локальных хостов (например, C: \ Windows \ System32 \ drivers \ etc \ hosts). В моем случае я ранее использовал это, чтобы указать URL-адрес окна разработчика, а затем забыл об этом. Когда я затем повторно использовал тот же URL, я продолжал получать Bad Request (Invalid Hostname), потому что трафик шел на неправильный сервер.
Я увидел ту же ошибку после использования msdeploy для копирования приложения на новый сервер. Оказалось, что привязки по-прежнему использовали IP-адрес с предыдущего сервера. Итак, дважды проверьте IP-адрес в привязках IIS. (Кажется очевидным постфактум, но мне не сразу пришло в голову проверить это).