У меня есть тестовое приложение ASP.NET MVC3, разработанное в VS2012. Когда я начинаю отладку, доступ к приложению с хост-машины осуществляется через запрос к http://localhost:<portnumber>
. Но если я попытаюсь получить доступ к тому же приложению с удаленного компьютера в интрасети, http://<ip>:<portnumber>
я получаю " HTTP error 400: Bad request. Invalid Host Name.
Насколько оно работает в IIS Express", любая конфигурация сервера будет недоступна.
Есть ли способы решить эту проблему?
Ответы:
Обновить
Я сделал видео, которое лучше описывает процесс, https://youtu.be/5ZqDuvTqQVs
Если вы используете Visual Studio 2013 или более поздней версии, убедитесь, что вы запускаете его от имени администратора, чтобы это работало.
Откройте файл
%USERPROFILE%\My Documents\IISExpress\config\applicationhost.config
(в VS2015 может быть$(solutionDir)\.vs\config\applicationhost.config
). Внутри вы должны увидеть что-то вроде этого:<site name="WebSite1" id="1" serverAutoStart="true"> <application path="/"> <virtualDirectory path="/" physicalPath="%IIS_SITES_HOME%\WebSite1" /> </application> <bindings> <binding protocol="http" bindingInformation="*:8080:localhost" /> </bindings> </site>
Измените значение
bindingInformation=":8080:localhost"
наbindingInformation="*:8080:*"
(номер порта, в моем случае 8080, будет другим).Примечание: Если не работает, попробуйте,
bindingInformation="*:8080:
звездочку можно убрать.Затем убедитесь, что ваш брандмауэр разрешает входящие соединения на этом порту. Возможно, вам потребуется перезапустить систему или хотя бы Visual Studio, чтобы IISExpress перезагрузил файл конфигурации.
Если это не сработает, взгляните на этот ответ: https://stackoverflow.com/a/5186680/985284
источник
<site name="Website1(1)" id="2" serverAutoStart="true">
я все еще не могу получить доступ к веб-сайту с другого компьютера.bindingInformation="*:8080:*"
возникла эта проблема, но у меня не получилось, и возникла проблема, с которой столкнулся @Y.Ecarri. Что , наконец , закончился рабочая падали звездочку:bindingInformation=":8080:"
. Парень, это сводило меня с ума, надеюсь, это кому-то поможет.bindingInformation=":8080:"
(без *)VisualStudio 2015 без прав администратора
В вашем каталоге решений в файле
.vs\config\applicationHost.config
измените строку<binding protocol="http" bindingInformation="*:44302:localhost" />
к
<binding protocol="http" bindingInformation=":44302:" />
(где 44302 - ваш порт)
Из командной строки администратора:
я. Включить привязку к порту без прав администратора
netsh http add urlacl url=http://*:44302/ user=Everyone
II. Разрешить через брандмауэр
netsh advfirewall firewall add rule name="IISExpress visualstudio app" protocol=tcp localport=44302 dir=in action=allow
источник
За исключением изменения файла конфигурации iisexpress, иногда вам также необходимо выполнить команду, как показано ниже.
netsh http add urlacl url = http: // *: 49419 / user = Все
источник
Как избежать запуска Visual Studio от имени администратора
Используя оба ответа Гаррета и @ shangkeyun, вы можете подключиться к работающему веб-сайту без необходимости запускать Visual Studio от имени администратора:
%USERPROFILE%\My Documents\IISExpress\config\applicationhost.config
name=MySiteName
<binding>
элемент в<bindings>
разделе. У вас должно получиться две строчки сbinding
.Теперь это должно выглядеть так, при условии, что порт
12345
:<binding protocol="http" bindingInformation="*:12345:localhost" /> <binding protocol="http" bindingInformation="*:12345:" />
Включить привязку к порту без прав администратора
netsh http add urlacl url=http://*:12345/ user=Everyone
РЕДАКТИРОВАТЬ 2019: gregmac добавил шаг для добавления экземпляра VS в белый список. Мне это никогда не было нужно, но все равно перечисляю:
netsh advfirewall firewall add rule name="IISExpress visualstudio app" protocol=tcp localport=12345 dir=in action=allow
источник
Поскольку я не могу добавить комментарий к сообщению @Garret Fogerlie и в ответ на проблему комментаторов (@ Y.Ecarri и @SamuelEdwinWard), я последовал предложению Гаррета, используя Visual Studio 2013, запустив его в режиме администратора и изменив
application.config
файл.Запустив отладку и увидев то же сообщение об ошибке, я вернулся
application.config
и увидел, что новая запись для моего сайта была создана точно так же, как проблема Y.Ecarri.Поэтому я прекратил отладку, оставил свое решение открытым в Visual Studio и
application.config
снова отредактировал файл для новой записи. Я также просто удалил*
знаки иlocalhost
полностью, поэтому для новой записи у меня было следующее:<binding protocol="https" bindingInformation=":44300:" />
источник
Некоторые из вас могут потратить много времени на изменение и тестирование с помощью каталога% USERPROFILE%. Если вы используете отладку VS , используйте $ (solutionDir) .vs \ config \ applicationhost.config
источник
Благодаря byteit:
Перейдите в applicationhost.config в Documents / IISExpress / config
найдите запись для конкретного сайта, над которым вы работаете:
Добавить:
<binding protocol="http" bindingInformation="*:<your site port>:*" />
перед существующими
<binding protocol="http" bindingInformation="*:<your site port>:localhost" />
Чтобы достичь решения без VS2013, создайте для вас новую запись xml веб-сайта при перезапуске. Вам нужно будет запустить его от имени администратора.
источник
После вышеуказанных настроек мне пришлось запустить Visual Studio в административном режиме.
источник
Вот что сработало для меня:
C:\VSProjects
в моем случае)Directory Browsing
из списка вариантов. Справа естьEnable
кнопка. Щелкните по нему.Теперь я могу получить доступ к своей папке и корзине проекта в сети через
mypcname\VSProjects\myProj\outputBinViewer
.источник
При отладке очень похожей проблемы в Visual Studio Code я решил ее, добавив:
"env": { // ... "ASPNETCORE_URLS": "http://*:5000" // change to the port you are using // ... },
.. на launch.json
По-видимому, по умолчанию он связывает протокол http с localhost: 5000, поэтому он работает с localhost, но не с IP-адресом - ни удаленно, ни локально.
Если вы пытаетесь попасть в точку останова запросом с другого компьютера, не забудьте проверить настройки брандмауэра (и / или антивируса).
надеюсь это поможет
источник