Настройка IIS Express для внешнего доступа к проекту VS2010 - PullRequest
102 голосов
/ 25 марта 2011

Я занимаюсь разработкой проекта в VS2010 и могу просматривать свой сайт локально через IIS Express. Я хотел бы включить внешний доступ по сети.

Все мои исследования отправили меня в эту запись в блоге: http://blogs.iis.net/vaidyg/archive/2010/07/29/serving-external-traffic-with-webmatrix-beta.aspx,, что полезно, но, похоже, не показывает, как настроить привязки для проекта, начатого в visual studio (я не могу найти экран на скриншотах и я отредактировал информацию о привязке в applicationhost.config, но, похоже, она не отражается при запуске сайта из visual studio).

Ответы [ 9 ]

134 голосов
/ 26 марта 2011

1 После редактирования файла applicationhost.config (находится в папке IISExpress в ваших документах) привязки вашего сайта должны выглядеть следующим образом:

<bindings>
  <binding protocol="http" bindingInformation="*:8080:*" />
</bindings>

Привязки состоят из трех частей.Во-первых, IP-адрес или список, или, как в этом случае, подстановочный знак.Во-вторых, номер порта и, в-третьих, имя хоста, или список, или подстановочный знак (для фильтрации по заголовку Host).Для целей разработки подстановочный знак здесь наиболее подходит, так как вы, вероятно, будете использовать уникальный порт.

2 Поскольку вы используете привязку без локального хоста, требуются дополнительные разрешения.Вы можете запустить VS от имени администратора или, желательно, добавить URL ACL , чтобы предоставить необходимые разрешения.В приведенном ниже примере разрешение дано каждому, но вы можете использовать свое собственное имя пользователя.

Примечание: urlacl должно точно соответствовать привязке.Таким образом, urlacl для http://*:8080 допускает привязку *:8080:*, но не привязку *:8080:localhost, даже если последняя является подмножеством первой. это означает, что если вместо использования подстановочного знака вы перечисляете заголовки хоста в applicationhost.config, вы должны добавить соответствующие urlacl для каждого.

Шаги для настройки HTTP.sys для внешнего трафика аналогичны настройке сайта для использования зарезервированного порта.В Windows 7 или Windows Vista из командной строки с повышенными привилегиями выполните следующую команду:

netsh http add urlacl url=http://*:8080/ user=DOMAIN\username

В Windows XP из командной строки с повышенными привилегиями выполните следующую команду:

httpcfg set urlacl /u http://*:8080/ /a D:(A;;GX;;;WD)

Примечание 2 Если запуск VS от имени администратора или добавление записей ACL не решит вашу проблему, то запустите IIS Express из командной строки и проверьте,Есть какие-либо обязательные сообщения об ошибках регистрации.Для запуска из командной строки введите следующую команду:

iisexpress.exe /site:"your-site-name"

3 Наконец вам потребуются соответствующие записи брандмауэра.Для этого проще всего использовать консоль «Брандмауэр Windows в режиме повышенной безопасности».

В разделе «Правила для входящих подключений» выберите «Новое правило ...».

  • Тип правила "Пользовательский".
  • Программа - Услуги-> Настроить ...-> Применить только к службам.(Хотя IIS Express не является службой, мультиплексор HTTP, который он использует).
  • Протокол - TCP
  • Определенные порты: список всех портов для всех ваших привязок IIS Express.Вы можете вернуться к этому правилу и добавить порты в любое время.(Если это становится утомительным, вы можете добавить диапазон, например 40000-65534, который охватывает весь диапазон, используемый Visual Studio, но имейте в виду, что это менее безопасно).
  • Действие «Разрешить соединение»
  • Профиль будет одним из следующих.В случае сомнений выберите «Домен + частный».
    • «Домен», если у вас корпоративный рабочий стол и будет работать только в локальном домене
    • «Домен + частный» Если у вас частная машина разработки в не корпоративной среде,или корпоративный ноутбук, который также должен работать при работе из дома.
    • «Домен, частный и общедоступный», если вам нужно проводить демонстрации в не частных сетях.
  • Имя должно быть примерно таким, как "IIS Express Dev Server"
29 голосов
/ 30 июля 2012

Я тоже потратил часы на эту проблему, пытаясь перейти от моего Android Xoom к моей машине win7 dev, чтобы я мог протестировать новое веб-приложение asp.net, которое я создал.Все, что я сделал, это изменил файл applicationhost.config IISExpress с использования HostName ПК на текущий IP-адрес ПК для моего нового сайта.

<binding protocol="http" bindingInformation="*:80:dev-Lee" />

на

<binding protocol="http" bindingInformation="*:80:192.168.1.102" /> 

Как только я это сделал& перезапустил IISExpress ... Я смог перейти к своему устройству dev-Lee и увидеть мое приложение из моего Xoom!

14 голосов
/ 09 апреля 2014

Мы можем добавить несколько адресов привязки, отредактировав applicationhost.config из IIS Express

<bindings>
   <binding protocol="http" bindingInformation="*:62217:localhost" />
   <binding protocol="http" bindingInformation="*:62217:192.168.0.5" />
   <binding protocol="http" bindingInformation="*:62218:192.168.0.5" />
</bindings>

Теперь мы можем получить доступ к веб-сайту из локальной сети с помощью IP-адреса.

Доступ к локальным сайтамиз Lan с использованием IIS Express

6 голосов
/ 22 мая 2015

Visual Studio 2013 с пакетом обновления 1 (SP1) и выше (2015) включает параметр «Применить настройки сервера ко всем пользователям (сохранить в файле проекта)».Это включено по умолчанию.При включении Visual Studio запускает IIS Express с аргументами командной строки, которые заставляют его использовать другой файл конфигурации.Расположение файла applicationhost.config находится в каталоге проекта в .vs \ config.

2 голосов
/ 02 ноября 2016

Мы сделали бесплатное расширение VS (2012, 2013, 2015) под названием Conveyor, которое позволяет это - вы можете найти его в меню «Инструменты-> Расширения ...» в VS или на сайте галереи https://visualstudiogallery.msdn.microsoft.com/a429dbb7-a982-4541-b401-934375c02c0f?SRC=Home

1 голос
/ 31 марта 2017

Если вы работаете с Visual Studio, выполните следующие действия для доступа к IIS-Express через IP-адрес:

  1. Получите IP-адрес хоста: ipconfig в командной строке Windows
  2. GoTo $ (SolutionDir) .vs \ config \ applicationHost.config
  3. Найти
    <site name="WebApplication3" id="2"> <application path="/" applicationPool="Clr4IntegratedAppPool"> <virtualDirectory path="/" physicalPath="C:\Users\user.name\Source\Repos\protoype-one\WebApplication3" /> </application> <bindings> <binding protocol="http" bindingInformation="*:62549:localhost" /> </bindings> </site>
  4. Добавить: <binding protocol="http" bindingInformation="*:62549:192.168.178.108"/>
    с вашим IP-адресом
  5. Запустите вашу Visual Studio с правами администратора, и все должно работать
  6. Может быть, искать некоторые проблемы с брандмауэром, если вы пытаетесь подключиться с удаленного

Подсказка в том, чтоVisual Studio имеет собственный файл applicationHost.config!

0 голосов
/ 20 февраля 2016

Screenshot

в пуле приложений на IIS установите «Включить 32-разрядные приложения» в «true».

0 голосов
/ 28 января 2015

У меня было много проблем с тем, чтобы заставить это работать на Visual Studio 2012, я перешел с 404 ошибок на 503 ошибки.В конце концов, что сработало для меня, было стереть все связанные настройки в конфигурации IIS Express ...

"\Program Files (x86)\IIS Express\appcmd.exe" list site
"\Program Files (x86)\IIS Express\appcmd.exe" delete site xxx
"\Program Files (x86)\IIS Express\appcmd.exe" delete site yyy

Затем я создал новый виртуальный каталог на странице свойств в моем веб-проекте в VS, но до этогоЯ создал виртуальный каталог, изменил имя хоста на http://myhost:80/ и нажал кнопку «Создать виртуальный каталог».Ранее я получал сообщения о том, что имя хоста должно быть «localhost», но на этот раз это не так.И после этого все заработало.

Короче, сначала очистите существующий конфиг и начните снова.

0 голосов
/ 07 июня 2013

Если у вас внешний домен "name.mydyndns.com", то вам нужно написать:

<binding protocol="http" bindingInformation="*:name.mydyndns.com" />

Это работает на Windows 2003 Server и IIS 7.5 Express.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...