IISExpress возвращает ошибку 503 от удаленных компьютеров
Я пытаюсь протестировать веб-сайт, который я запускал в локальном экземпляре IISExpress, с некоторыми другими машинами/устройствами в локальной сети. Я запускаю Win7 Pro.
Когда я сначала пытаюсь перейти на свою машину с другого компьютера в сегменте локальной сети, я получаю ошибку 400: Недопустимое имя хоста.
Я понимаю, что мне нужно предоставить удаленный доступ к ACL с помощью команды в расширенной командной строке, например:
netsh http add urlacl url=http://mymachinename:50333/ user=everyone
Теперь я получаю сообщение о недоступности 503.
Брандмауэр Windows в настоящий момент отключен, и я могу просмотреть мой локальный экземпляр IISExpress с адресом http://localhost:50333
Какова последняя часть этой конфигурации?
Ответы
Ответ 1
Похоже, вам не хватает записи информации привязки в файле applicationhost.config.
-
Откройте файл applicationhost.config. Возможные местоположения:
-
%userprofile%\Documents\IISExpress\config\applicationhost.config
-
$(solutionDir)\.vs\config\applicationhost.config
(VS2015)
- В противном случае проверьте вывод
iisexpress.exe
.
-
Найдите свою запись в WebSite и добавьте следующую привязку к имени вашей машины.
<binding protocol="http" bindingInformation=":50333:your-machine-name" />
-
Перезапустите IIS Express
Ответ 2
Было только одно, что сработало для меня.
используя *:portnumber:*
, не помогло. Да, после этого, и убедитесь, что брандмауэр Windows открыт, я могу подключиться к порту, но у меня все еще есть ошибка "503".
Я проверил несколько вещей локально и обнаружил, что работает только http://localhost. Использование реального IP-адреса (а не 127.0.0.1, но, например, 192.168.1.50), все равно возвращает 503 даже на локальном компьютере. Я попытался использовать настоящее имя хоста в привязках, но IIS Express отказался запускать. Это может иметь какое-то отношение к тому, как было решено имя хоста. Я еще не исследовал это.
Наконец, я решил использовать эту конфигурацию:
<binding protocol="http" bindingInformation="*:53351:localhost" />
<binding protocol="http" bindingInformation="192.168.1.50:53351:*" />
Таким образом, мне удалось подключиться с удаленной машины с помощью http://192.168.1.50:53351
.
Ответ 3
После того, как вы потратили больше 3 часов на такую полную тему, я решил поделиться с вами своей установкой.
Моя конфигурация - Visual Express 2012 для веб-обновления 4 на окнах 8. Это был мой первый возврат к MS VS после учебы (по крайней мере 8 лет), и теперь я уверен, что правила linux. На django этот тип установки занял у меня 10 минут поисковой документации.
-
отключить брандмауэр для тестирования
netsh advfirewall set allprofiles state off
-
привязки привязок в моем случае локальный адрес localIP = 192.168.1.102 (потому что ссылки не могут содержать нечисловой домен, используйте его ниже, а не mylocaldomain.com, см. политику stackoverflow)
в Documents\IISExpress\config\applicationhost.config
<bindings>
<binding protocol="http" bindingInformation="*:53351:mylocaldomain.com" />
<binding protocol="http" bindingInformation="*:53351:localhost" />
</bindings>
-
автоматически добавить автозапуск для службы запуска ISS Express
<site name="NeuronCharts" id="2" serverAutoStart="true">
-
Добавьте некоторые странные правила на http-сервер (я до сих пор не знаю, если это nesseary)
netsh http add urlacl url=http://mylocaldomain.com:53351/ user=everyone
-
запускать IISExpress вручную не из VS IDE
- вы увидите, что ISSExpress регистрирует привязки
- запустить браузер
http://mylocaldomain.com:53351
если он работает, мы можем добавить правило брандмауэра
-
добавить правило брандмауэра
netsh advfirewall firewall add rule name="IISExpressWeb" dir=in protocol=tcp localport=53351 remoteip=any action=allow
установить удаленный доступ к любому, если вы хотите получить доступ к серверу из внешнего мира, если вы хотите получить доступ к локальной сети, используйте localsubnet
-
Запустить брандмауэр
netsh advfirewall set allprofiles state on
-
проверьте снова, если все работает на локальном и общедоступном ip
Желаю удачи.
Рафал
Ответ 4
Обнаружена проблема, связанная с плохим отображением urlacl. Чтобы понять это:
netsh http show urlacl
и найдите такие вещи, как http://+:80/
или порт, к которому вы привязываетесь.
Затем используйте
netsh http delete url=<the url from the list>
Это устранило проблему для меня.
Ответ 5
Ничто не сработало для меня. Наконец, я нашел iisexpress-proxy
См. Мой ответ fooobar.com/questions/19303/...
Другим решением является ngrok
Ответ 6
Что мне помогло, щелкнул правой кнопкой мыши значок "IISExpress", "Показать все приложения". Затем, выбрав веб-сайт, я увидел, какой aplicationhost.config он использует, и исправление пошло отлично.
![Конфигурация IISExpress]()
Ответ 7
Проблема заключается в обновлении файла applicationhost.config внутри веб-папки вместо решения. Конфигурационный файл решения - это тот, который нужно изменить
Ответ 8
Что касается ответа Антони Риццоло: в Windows 8.1 мне пришлось вводить так:
netsh http delete urlacl url=<the url from the list>
Например:
netsh http delete urlacl url=http://+:8689/
Ответ 9
Ни один из ответов выше не работал для меня.
У меня было две записи в netsh для одной и той же службы
netsh http show urlacl
![enter image description here]()
Один использует сильный подстановочный знак, другой - слабый подстановочный знак.
Удаление этого с помощью слабого шаблона выполнило эту работу.
Подробнее о сильном и слабом шаблоне в контексте netsh
Когда хост-элемент UrlPrefix состоит из одного знака плюса (+), UrlPrefix соответствует всем возможным именам хостов в контексте его элементов схемы, порта и relativeURI и попадает в категорию сильных подстановочных знаков.
Когда в качестве элемента хоста появляется звездочка (*), UrlPrefix попадает в категорию подстановочных символов. Этот тип UrlPrefix соответствует любому имени хоста, связанного с указанной схемой, портом и relativeURI, которые еще не были сопоставлены сильным подстановочным знаком, явным или IP-привязкой к слабому шаблону UrlPrefix. Эта спецификация хоста может использоваться как уловка по умолчанию в некоторых случаях или может использоваться для указания большого раздела пространства имен URL-адресов без использования многих UrlPrefixes.
https://docs.microsoft.com/en-gb/windows/desktop/Http/urlprefix-strings
Ответ 10
После решения @vikomall не забудьте запустить VS от имени администратора. Это исправить это для меня.