Підключення до сервера налагодження Visual Studio IIS Express через мережу


84

У мене є тестова програма ASP.NET MVC3, розроблена у VS2012. Коли я починаю налагоджувати, доступ до програми здійснюється з хост-машини через запит до http://localhost:<portnumber>. Але якщо я спробую отримати доступ до тієї ж програми з віддаленої машини в інтрамережі через http://<ip>:<portnumber>I отримую, HTTP error 400: Bad request. Invalid Host Name.наскільки вона працює на IIS Express, будь-яка конфігурація сервера недоступна.

Чи є способи вирішення цього?


Скористайтеся нашим безкоштовним розширенням Conveyor, щоб зробити це marketplace.visualstudio.com/... воно працює без будь-яких змін конфігурації, безболісно.
Джим У каже, відновити Моніку

Відповіді:


138

Оновлення

Я зробив відео, яке краще описує процес, 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


30
Це рішення для мене не спрацювало. У VS2013 після модифікації атрибута bindingInformation, коли я відкриваю IDE і завантажую проект, він створює новий запис (тобто, <site name="Website1(1)" id="2" serverAutoStart="true">і я все ще не можу отримати доступ до веб-сайту з іншого комп’ютера.
Yván Ecarri,

5
Це спрацювало для мене у VS2013: gilesey.wordpress.com/2013/04/21/…
Jay Cummins

10
Основний твік - запустити візуальну студію в якості адміністратора.
Tanmay Mandal

20
Я не знаю, чому, здається, я був єдиним із цим питанням, але bindingInformation="*:8080:*"не працював для мене і призвів до проблеми, яку відчував @ Y.Ecarri. Що , нарешті , закінчився робоча падали зірочку: bindingInformation=":8080:". Хлопчик зробив це з мене з розуму, я сподіваюся, це комусь допоможе.
Дражен Біловук

5
Так само, як Дразену, доводилося використовувати режим адміністратора + bindingInformation=":8080:"(без *)
Матьє Шарбоньє

42

VisualStudio 2015, не для адміністраторів

  1. У папці рішення, у файлі .vs\config\applicationHost.configзмініть рядок

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

    до

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

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


  1. З командного рядка адміністратора:

    i. Увімкнути приєднання до порту неадміністратора

    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


  1. Почніть налагодження з VisualStudio

Зверніть увагу, що папка .vs прихована у Windows 10. Показати приховані файли, щоб побачити її.
bhathiya-perera

О! Ви - мій герой! НАРЕШТІ! Ключем була конфігурація папки .vs. Не можу вам подякувати!
twsmale

Зверніть увагу, як @ArunPrasadES, що згадується нижче, запустіть VS від імені адміністратора, якщо у вас виникне помилка.
Елмер

@Elmer Запуск IDE та налагодження програм як адміністратор - загалом погана ідея (за кількома вузькими винятками). Найголовніше, що він маскує проблеми з дозволами під час розробки (коли їх легко виправити), що врешті-решт змушує вашу програму (без потреби) запускатись як адміністратор - такі речі, як збереження файлів у місцезнаходженні лише для адміністратора тощо. виправте проблему з дозволами IDE та / або ОС / користувача.
gregmac

@gregmac Вибачте за поганий коментар, я мав на увазі те, що у мого IIS виникли проблеми, якщо я встановив параметри прив'язки і не запустив VS як адміністратор, якийсь ідентифікатор помилки процесу, який, як я вважаю, пов'язаний з дозволами Windows 10, оскільки у мене є абсолютно нова Windows 10 інсталяцій з новою інсталяцією VS 2019. В іншому я погоджуюсь з вами на 100%
Елмер,

21

За винятком модифікації файлу конфігурації iisexpress, іноді вам також потрібно виконати команду, як показано нижче.

netsh http add urlacl url = http: // *: 49419 / user = Усі


Яка користь від порту 49419? Це лише приклад порту, який також може бути 8080?
олігофрен

Відповідаючи на власне запитання: так, це порт, на якому працює програма. Якщо ви використовуєте цю відповідь, то вам більше не потрібно запускати Visual STudio від імені адміністратора.
олігофрен

1
Чи можете ви дати коротке пояснення того, як це працює?
Шишир Гупта,

12

Як уникнути запуску Visual Studio від імені адміністратора

Використовуючи відповіді як Garret, так і @ shangkeyun, ви можете досягти підключення до запущеного веб-сайту без необхідності запускати Visual Studio як адміністратор:

  1. відчинено %USERPROFILE%\My Documents\IISExpress\config\applicationhost.config
  2. Шукайте свій сайт за допомогою name=MySiteName
  3. Скопіюйте наявний <binding>елемент у <bindings>розділі. Тепер у вас має бути два рядки з binding.
  4. Видаліть частину "localhost" у обов'язковій інформації.
  5. Тепер це повинно виглядати так, припускаючи, що порт 12345:

    <binding protocol="http" bindingInformation="*:12345:localhost" />
    <binding protocol="http" bindingInformation="*:12345:" />
    
  6. Увімкнути приєднання до порту неадміністратора

    netsh http add urlacl url=http://*:12345/ user=Everyone
    

EDIT 2019: gregmac додав крок до білого списку екземпляра VS. Мені це ніколи не потрібно було, але все одно перерахувати:

  1. netsh advfirewall firewall add rule name="IISExpress visualstudio app" protocol=tcp localport=12345 dir=in action=allow

6
Додавши netsh, помилку було змінено на "Служба недоступна"
tofutim

@tofutim те саме тут. ти знайшов рішення?
морозний дивовижний

Ви перезапустили Visual Studio пізніше?
олігофрен

Привіт, я щойно помітив, що команда netsh була неправильною у поєднанні з попередніми рядками. Я використовував 12345 як порт вище, але використовував 49419 як приклад порту в команді netsh. Це було виправлено в моєму оновленні.
олігофрен

10

Оскільки я не можу додати коментар до публікації @Garret Fogerlie та у відповідь на проблему коментаторів (@ Y.Ecarri та @SamuelEdwinWard), я дотримувався того, що запропонував Гаррет, використовуючи Visual Studio 2013, запускаючи його в режимі адміністратора та змінюючи application.configфайл.

Після запуску налагодження і побачивши, що я отримав те саме повідомлення про помилку, я повернувся application.configі побачив, що новий запис для мого сайту був створений так само, як випуск Y.Ecarri.

Тому я припинив налагодження, залишив своє рішення відкритим у Visual Studio і application.configзнову відредагував файл для нового запису. Я також просто видалив *співи і localhostповністю, тому для нового запису я мав таке:

<binding protocol="https" bindingInformation=":44300:" />


Це єдине рішення, яке допомогло! Дякую.
code5

2

Деякі з вас можуть витратити багато часу на модифікацію та тестування за допомогою каталогу% USERPROFILE%. Якщо ви використовуєте налагодження VS , використовуйте $ (solutionDir) .vs \ config \ applicationhost.config


1

Завдяки byteit:

Перейдіть до applicationhost.config у Documents / IISExpress / config

знайти запис для конкретного сайту, над яким ви працюєте:

додати:

<binding protocol="http" bindingInformation="*:<your site port>:*" />

перед існуючим

 <binding protocol="http" bindingInformation="*:<your site port>:localhost" />

Щоб досягти рішення, не маючи VS2013, створіть для вас новий запис xml веб-сайту під час перезапуску. Вам потрібно буде працювати від імені адміністратора.


1

Після вищевказаних конфігурацій мені довелося запустити Visual Studio в адміністративному режимі.

введіть тут опис зображення


0

Це те, що мені вдалося:

  • Запустіть менеджер IIS
  • Додайте новий віртуальний каталог, який вказує на папку проектів ( C:\VSProjectsу моєму випадку)
  • Виберіть новий віртуальний каталог у менеджері IIS. Виберіть Directory Browsingзі списку опцій. На правій стороні є Enableкнопка. Клацніть на ньому.

Тепер я можу отримати доступ до своєї папки та контейнера для проектів у мережі через mypcname\VSProjects\myProj\outputBinViewer.


0

У мене була дуже подібна проблема налагодження у Visual Studio Code , я вирішив її, додавши:

"env": {
      // ...
      "ASPNETCORE_URLS": "http://*:5000" // change to the port you are using
      // ...
},

.. для запуску.json

Очевидно, за замовчуванням він прив'язує протокол http до 'localhost: 5000', тому він працює з localhost, але не з ip-адресою - ні віддалено, ні локально.

Якщо ви намагаєтеся знайти точку зупинки за запитом, що надходить з іншого комп’ютера, не забудьте перевірити налаштування брандмауера (та / або антивіруса)

сподіваюся, це допоможе

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.