Подключение к серверу 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, любая конфигурация сервера недоступна.

есть ли какие-либо способы решения этой проблемы?

693   10  

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

  1. в вашем решении dir, в файле .vs\config\applicationHost.config изменить строку

    <binding protocol="http" bindingInformation="*:44302:localhost" />

    до

    <binding protocol="http" bindingInformation=":44302:" />

    (где 44302 ваш порт)


  1. из командной строки администратора:

    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


  1. начать отладку из 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 в качестве администратора:

  1. открыть %USERPROFILE%\My Documents\IISExpress\config\applicationhost.config
  2. поиск вашего сайта с помощью name=MySiteName
  3. дублировать существующие <binding> элемент . Теперь у вас должно быть две строки с binding.
  4. удалите часть "localhost" в bindingInformation.
  5. теперь это должно выглядеть так, предполагая, что порт 12345:

    <binding protocol="http" bindingInformation="*:12345:localhost" />
    <binding protocol="http" bindingInformation="*:12345:" />
    
  6. удалите все ограничения брандмауэра, запустив следующий 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.

после вышеуказанных конфигураций мне пришлось запустить Visual Studio в административном режиме.

enter image description here

некоторые из вас могут потратить много времени на изменение и тестирование с помощью каталога %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-адрес - ни удаленно, ни локально.

Если вы пытаетесь попасть в точку останова по запросу, поступающему с другого компьютера, не забудьте проверить настройки брандмауэра (и / или антивируса)

надеюсь, что это помогает

    Ничего не найдено.

Добавить ответ:
Отменить.