Подтвердить что ты не робот

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

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

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

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

4b9b3361

Ответ 1

Вы проверили привязку IIS? (inetmgr.exe) Он не может быть зарегистрирован, чтобы принимать все имена хостов на 8080.

Например, если вы настроили его для mysite.com:8080 и нажмете его на localhost: 8080, IIS получит запрос, но не привяжет имя хоста к нему, чтобы он отклонил.

Кроме того, вы должны проверить журналы IIS (C:\inetpub\logs\wmsvС#) на сервере и посмотреть, видите ли вы свой запрос. Затем вы узнаете, есть ли проблема на вашем клиенте или на самом сервере.

Ответ 2

FWIW, если вы хотите просто разрешить запросы, направленные на любое имя хоста /ip, тогда вы можете установить привязку так:

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

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


EDIT: при использовании IIS Express для отладки, по умолчанию для этого конфигурационного файла настроек является

C:\Users\{User}\Documents\IISExpress\config\applicationhost.config

Ответ 3

Эта страница от 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/

Ответ 4

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

Связывание сайтов в IIS

Ответ 5

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

Связывание сайтов IIS

Ответ 6

эта проблема моя проблема:
(Извините за мой плохой английский)
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 и ваш порт и нажмите "Далее"., установите флажок "Разрешить связь" и нажмите "Далее", установите флажок и нажмите "Далее", введите имя и нажмите "Готово".

сделано.

Ответ 7

Для 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>

Ответ 8

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

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

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


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

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

Ответ 9

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

aspnet_regiis -i

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

Ответ 10

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

Ответ 11

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

Ответ 12

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

Ответ 13

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

Ответ 14

Убедитесь, что IIS прослушивает ваш порт.

В моем случае это была проблема. Поэтому мне пришлось изменить свой порт на что-то другое, например 8083, и это решило эту проблему.