Когда я пытаюсь ударить свое веб-приложение на порт 8080, я получаю следующую ошибку
Неверный запрос - неверное имя хоста
Ошибка HTTP 400. Недопустимое имя хоста запроса.
Я даже не знаю, с чего начать диагностировать эту проблему.
Когда я пытаюсь ударить свое веб-приложение на порт 8080, я получаю следующую ошибку
Неверный запрос - неверное имя хоста
Ошибка HTTP 400. Недопустимое имя хоста запроса.
Я даже не знаю, с чего начать диагностировать эту проблему.
Вы проверили привязку IIS? (inetmgr.exe) Он не может быть зарегистрирован, чтобы принимать все имена хостов на 8080.
Например, если вы настроили его для mysite.com:8080 и нажмете его на localhost: 8080, IIS получит запрос, но не привяжет имя хоста к нему, чтобы он отклонил.
Кроме того, вы должны проверить журналы IIS (C:\inetpub\logs\wmsvС#) на сервере и посмотреть, видите ли вы свой запрос. Затем вы узнаете, есть ли проблема на вашем клиенте или на самом сервере.
FWIW, если вы хотите просто разрешить запросы, направленные на любое имя хоста /ip, тогда вы можете установить привязку так:
<binding protocol="http" bindingInformation="*:80:*" />
Я использую эту привязку, чтобы загрузить VM с помощью IE6, а затем отладить мое приложение.
EDIT: при использовании 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 в node для вашего проекта добавьте:
<binding protocol="http" bindingInformation="*:8181:[your ip address]" />
НЕ добавляйте (как было предложено в другом ответе):
<binding protocol="http" bindingInformation="*:8181:*" />
Вышеуказанное подстановочное обязательство сломало мой доступ из http://192.168.1.6:8181/
Итак, я решил это, перейдя на мой сайт в диспетчере IIS и изменив имя хоста в привязках сайтов с localhost на *. Начинал работать сразу.
Не забудьте также привязать к IPv6-адресу! Я пытался добавить сайт на 127.0.0.1, используя localhost, и получил неверный запрос/недопустимое имя хоста. Когда я pinged localhost, он решил: 1, поскольку IPv6 был включен, поэтому мне просто пришлось добавить дополнительную привязку для исправления проблемы.
эта проблема моя проблема:
(Извините за мой плохой английский)
1.) открыть cmd adminstor и выполнить команду (Без квадратных скобок): netsh http add urlacl url = http://[ip adress]: [ порт]/пользователь = каждый
2.) documents/iisexpress/config/applicationhost.config и в корневой папке проекта в папке (скрытая папка).vs/config/applicationhost.config вам нужно добавить строку в тег "site":
3.) открыть "интернет-сервисы информации (iis)", (если не найти: intel in tasckbar напишите "Включить или отключить функции окна" и откройте Resulet, а затем установите флажок "Интернет-информационная служба" и его установка) на левом экране щелкните имя компьютера → Сайты → Веб-сайт по умолчанию, а затем щелкните на правом экране "Связывание", нажмите кнопку "Добавить", что вам нужно, и нажмите "ОК".
4.) откройте "Брандмауэр Windows с повышенной безопасностью", на левом экране нажмите "Правила входящих сообщений", а затем нажмите правый порт "Новое правило..." и нажмите "Далее", проверьте TCP и ваш порт и нажмите "Далее"., установите флажок "Разрешить связь" и нажмите "Далее", установите флажок и нажмите "Далее", введите имя и нажмите "Готово".
сделано.
Для 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>
Я не уверен, что это была ваша проблема, но для тех, кто пытается получить доступ к своему веб-приложению со своей машины и имеет эту проблему:
Убедитесь, что вы подключаетесь к 127.0.0.1
(a.k.a localhost
), а не к внешнему IP-адресу.
Ваш URL должен быть чем-то вроде http://localhost:8181/
или http://127.0.0.1:8181
и не http://YourExternalIPaddress:8181/
.
Когда вы подключаетесь к своему внешнему IP-адресу, вы подключаетесь к вам из Интернета, как если бы вы были незнакомцем (или хакером).
Однако, когда вы подключаетесь к локальному хосту, вы подключаетесь локально как к себе, и блок явно не нужен (и вообще избегается).
Вы можете использовать инструмент CMD для Visual Studio 2005/2008/2010. Запустите его как admin и напишите
aspnet_regiis -i
Наконец, я могу успешно запустить свое приложение.
Проверьте файл локальных хостов (например, C:\Windows\System32\drivers\etc\hosts). В моем случае я ранее использовал это, чтобы указать URL-адрес в dev-бокс, а затем забыл об этом. Когда я снова использовал один и тот же URL-адрес, я продолжал получать Bad Request (Invalid Hostname), потому что трафик шел на неправильный сервер.
Я получил эту ошибку, когда попытался вызвать веб-сервис с помощью "localhost". Я исправил его, используя вместо этого фактический IP-адрес (192.168...)
Я видел ту же ошибку после использования msdeploy для копирования приложения на новый сервер. Оказалось, что привязки по-прежнему используют IP-адрес с предыдущего сервера. Итак, дважды проверьте IP-адрес в привязках IIS. (Кажется очевидным после факта, но мне не сразу приходилось это проверять).
Дважды проверьте точный URL, который вы предоставляете. Я увидел эту ошибку, когда пропустил префикс маршрута, определенный в ASP.NET, поэтому он не знал, куда направить запрос.
Убедитесь, что IIS прослушивает ваш порт.
В моем случае это была проблема. Поэтому мне пришлось изменить свой порт на что-то другое, например 8083, и это решило эту проблему.