Подключение к серверу Visual Studio debugging IIS Express по локальной сети
у меня есть тест ASP.NET приложение MVC3 разработано в VS2012. Когда я начинаю отладку приложение доступно с хост-машины через запрос к http://localhost:<portnumber>. Но если я попытаюсь получить доступ к тому же приложению с удаленного компьютера в интрасети через http://<ip>:<portnumber> Я HTTP error 400: Bad request. Invalid Host Name. поскольку он работает на IIS Express, любая конфигурация сервера недоступна.
есть ли какие-либо способы решения этой проблемы?
10 ответов:
обновление
Я сделал видео, которое лучше описывает процесс,https://youtu.be/5ZqDuvTqQVs
если вы используете VS2013 и выше, убедитесь, что вы запустите его в качестве администратора для этой работы.
Откройте%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 Studios, чтобы заставить IISExpress перезагрузить файл конфигурации.
если это не работает, взгляните на этот ответ:https://stackoverflow.com/a/5186680/985284
VisualStudio 2015 Non-Admin
в вашем решении dir, в файле
.vs\config\applicationHost.configизменить строку
<binding protocol="http" bindingInformation="*:44302:localhost" />до
<binding protocol="http" bindingInformation=":44302:" />(где 44302 ваш порт)
из командной строки администратора:
i. разрешить non-admin для привязки к порту
netsh http add urlacl url=http://*:44302/ user=Everyoneвторой. Позвольте через брандмауэр
netsh advfirewall firewall add rule name="IISExpress visualstudio app" protocol=tcp localport=44302 dir=in action=allow
- начать отладку из VisualStudio
кроме как изменить файл конфигурации iisexpress, иногда вам также необходимо выполнить команду, как показано ниже.
netsh http add urlacl url=http://*: 49419 / user=Everyone
поскольку я не могу добавить комментарий к сообщению @Garret Fogerlie и в ответ на вопрос комментаторов (@Y. Ecarri и @SamuelEdwinWard), я следовал тому, что предложил Гаррет, используя Visual Studio 2013, запустив его в режиме администратора и изменив .
после запуска отладки и увидев, что я получил то же сообщение об ошибке, я вернулся в
application.configи увидел, что новая запись для моего сайта была создана так же, как вопрос Y. Ecarri.поэтому я прекратил отладку, держал мое решение открытым в Visual Studio, и отредактировал
application.configфайл снова для новой записи. Я просто убрал*поетому иlocalhostполностью, поэтому у меня было следующее для новой записи:
<binding protocol="https" bindingInformation=":44300:" />
как избежать запуска Visual Studio от имени администратора
используя как Гаррета и @shangkeyun это вы можете подключиться к запущенному веб-сайту без необходимости запускать Visual Studio в качестве администратора:
- открыть
%USERPROFILE%\My Documents\IISExpress\config\applicationhost.config- поиск вашего сайта с помощью
name=MySiteName- дублировать существующие
<binding>элемент . Теперь у вас должно быть две строки сbinding.- удалите часть "localhost" в bindingInformation.
теперь это должно выглядеть так, предполагая, что порт
12345:<binding protocol="http" bindingInformation="*:12345:localhost" /> <binding protocol="http" bindingInformation="*:12345:" />удалите все ограничения брандмауэра, запустив следующий cmd в качестве администратора:
netsh http add urlacl url=http://*:49419/ user=Everyone
спасибо byteit:
перейти к applicationhost.конфигурация в документах / IISExpress / config
найдите запись для конкретного сайта, над которым вы работаете:
добавить:
<binding protocol="http" bindingInformation="*:<your site port>:*" />перед существующим
<binding protocol="http" bindingInformation="*:<your site port>:localhost" />для достижения решения без VS2013 создать новую запись xml веб-сайта для вас при перезагрузке. Вам нужно будет запустить от имени администратора.
это то, что сработало для меня:
- запустите диспетчер IIS
- Добавить новый виртуальный каталог, который указывает на папку проектов (
C:\VSProjectsв моем случае)- выберите новый виртуальный каталог в диспетчере IIS. Выберите
Directory Browsingиз списка вариантов. На правой стороне есть . Щелкнуть его.теперь я могу получить доступ к моей папке и проект bin в сети через
mypcname\VSProjects\myProj\outputBinViewer.
некоторые из вас могут потратить много времени на изменение и тестирование с помощью каталога %USERPROFILE%. Если вы работаете на VS debug используйте $(solutionDir).vs\config\applicationhost.конфигурации
была очень похожая проблема отладки в Visual Studio Code, я решил его, добавив:
"env": { // ... "ASPNETCORE_URLS": "http://*:5000" // change to the port you are using // ... },.. к запуск.json
по-видимому, по умолчанию он связывает протокол http с 'localhost: 5000', поэтому он работает с localhost а не с ip-адрес - ни удаленно, ни локально.
Если вы пытаетесь попасть в точку останова по запросу, поступающему с другого компьютера, не забудьте проверить настройки брандмауэра (и / или антивируса)
надеюсь, что это помогает

Comments