Коли я намагаюся запустити свою веб-програму через порт 8080, я отримую таку помилку
Помилковий запит - помилкова помилка HTTP-імені хосту 400. Недійсна назва хосту запиту.
Навіть не знаю, з чого почати діагностувати цю проблему
Коли я намагаюся запустити свою веб-програму через порт 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, а потім налагодити свою програму.
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 у вузол для вашого проекту додайте:
<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 і отримав помилку з помилковим запитом / недійсним іменем хосту. Коли я пінгував localhost, він вирішив :: :: 1, оскільки IPv6 був увімкнений, тому мені просто довелося додати додаткове прив'язування, щоб виправити проблему.
Це вирішило мою проблему (вибачте за мою погану англійську):
відкрити cmd як адміністратор і запустити команду (без квадратних дужок):
netsh http add urlacl url=http://[ip adress]:[port]/ user=everyone
у documents/iisexpress/config/applicationhost.config
і в кореневій папці проекту у (прихованій) папці: .vs/config/applicationhost.config
вам потрібно додати рядок до тегу "сайт":
<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-адресу, я постійно отримував неправильний запит (недійсне ім'я хосту), оскільки трафік надходив на неправильний сервер.
Я побачив ту саму помилку після використання msdeploy для копіювання програми на новий сервер. Виявилося, що прив'язки все ще використовують IP-адресу попереднього сервера. Отже, перевірте IP-адресу в прив'язках IIS. (Здається фактом очевидним, але мені не відразу спало на думку перевірити це).