Неверный запрос-недопустимое имя хоста IIS7


когда я пытаюсь попасть в мое веб-приложение на порт 8080 я получаю следующую ошибку

Неверный Запрос-Недопустимое Имя Хоста
Ошибка HTTP 400. Недопустимое имя хоста запроса.

Я даже не знаю, с чего начать, чтобы диагностировать эту проблему

13 58

13 ответов:

вы проверили привязку IIS? (версии.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.конфигурации в узле для вашего проекта, добавить:

<binding protocol="http" bindingInformation="*:8181:[your ip address]" />

не добавляйте (как было предложено в другом ответе):

<binding protocol="http" bindingInformation="*:8181:*" />

вышеуказанная привязка подстановочных знаков нарушила мой доступ от http://192.168.1.6:8181/

Итак, я решил это, перейдя на свой сайт в Диспетчере IIS и изменив имя хоста в привязках сайта с localhost на *. Начал работать сразу же.

Site Bindings in IIS

Не забудьте также привязать к IPv6-адресу! Я пытался добавить сайт на 127.0.0.1 с помощью localhost и получил ошибку bad request/invalid hostname. Когда я пинговал localhost, он решил:: 1 так как IPv6 был включен, поэтому мне просто нужно было добавить дополнительную привязку, чтобы исправить проблему.

IIS Site Bindings

Я не уверен, что это была ваша проблема, но для тех, кто пытается получить доступ к своему веб-приложению со своей машины и имеет эту проблему:

убедитесь, что вы подключаетесь к 127.0.0.1 (а.к.а localhost), а не на ваш внешний IP-адрес.

Ваш URL должен быть что-то вроде http://localhost:8181/ или http://127.0.0.1:8181 и неhttp://YourExternalIPaddress:8181/.


дополнительная информация:
Причина это работает, потому что ваш брандмауэр может заблокировать ваш собственный запрос. Это может быть брандмауэр на вашей ОС, и это может быть (обычный) ваш маршрутизатор.

когда вы подключаетесь к своему внешнему IP-адресу, вы подключаетесь к вам из интернета, как если бы Вы были незнакомцем (или хакером).
Однако, когда вы подключаетесь к своему локальному хосту, вы подключаетесь локально как сами, и блок, очевидно, не нужен (и вообще избегается).

вы можете использовать Visual Studio 2005/2008/2010 CMD tool. Запустите его от имени администратора и напишите

aspnet_regiis -i

наконец - то я могу запустить свое приложение успешно.

на 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>

Я получил эту ошибку, когда пытался вызвать веб-сервис с помощью "localhost". Я исправил это, используя фактический IP вместо (192.168...)

Это slove моя проблема :
(извините за мой плохой английский)
1.) откройте cmd adminstor и запустите команду (без квадратных скобок): netsh http add urlacl url= http: / / [ip адрес]:[порт]/ пользователи=все

2.) documents/iisexpress/config / applicationhost.config и в корневой папке проекта в папке (скрытой папке) .vs/config / applicationhost.config вам нужно добавить строку в тег "site":

3.) открыть " интернет информационные услуги (IIS) диспетчер", (если не найдете: в серч в tasckbar писать "под окно или выключить" и открыть resulet а затем установите флажок "интернет-информационная служба" и ее установки) в левой части экрана выберите пункт Компьютер-имя - >сайты - >параметры веб-сайте и нажмите в правой части экрана "привязка" нажать кнопку Добавить wirte что необходимо, и нажмите кнопку OK.

4.) откройте "Брандмауэр Windows с повышенной безопасностью", в левом экране нажмите" входящие правила", а затем нажмите в правом экране " новое правило..." проверьте порт и нажмите кнопку Далее, проверьте TCP и ваш порт и нажмите кнопку Далее, установите флажок "Разрешить подключение" и нажмите кнопку Далее, установите флажок все и нажмите кнопку Далее, имя wirte и нажмите кнопку Готово.

сделано.

Проверьте ваш локальный файл hosts (C:\Windows\System32\drivers\etc\hosts например). В моем случае я ранее использовал это, чтобы указать URL на поле dev, а затем забыл об этом. Когда я затем повторно использовал тот же URL-адрес, я продолжал получать плохой запрос (недопустимое имя хоста), потому что трафик шел на неправильный сервер.

Я видел ту же ошибку после использования msdeploy для копирования приложения на новый сервер. Оказалось, что привязки все еще использовали IP-адрес с предыдущего сервера. Итак, дважды проверьте IP-адрес в привязках IIS. (Кажется очевидным постфактум, но мне не сразу пришло в голову это проверить).

дважды проверьте точный URL, который вы предоставляете. Я видел эту ошибку, когда я пропустил префикс маршрута, определенный в ASP.NET поэтому он не знал, куда направить запрос.