Настройка IIS Express для внешнего доступа к проекту VS2010

Я разрабатываю проект в 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).

Ответ 1

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

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

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

2 Поскольку вы используете привязку не-localhost, необходимы дополнительные разрешения. Вы можете запустить 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 с повышенной безопасностью".

В разделе "Входящие правила" выберите "Новое правило...".

  • Тип правила - "Пользовательский".
  • Программа - Services- > Customize...- > Подать заявку только на услуги. (Хотя IIS Express не является сервисом, используемый им мультиплексор HTTP).
  • Протокол TCP
  • Конкретные порты: список всех портов для всех ваших привязок IIS Express. Вы можете вернуться к этому правилу и добавить порты в любое время. (Если это становится утомительным, вы можете добавить диапазон, например 40000-65534, который охватывает весь диапазон, используемый Visual Studio, но имейте в виду, что это менее безопасно).
  • Действие: "Разрешить подключение"
  • Профиль будет одним из следующих. Если есть сомнения, выберите "Домен + частный".
    • "Домен", если ваш корпоративный рабочий стол и будет работать только в локальном домене
    • "Домен + частный". Если вы являетесь частной машиной разработки в некорпоративной среде или корпоративным ноутбуком, который также должен работать при работе из дома.
    • "Домен, частный и общественный", если вам нужно проводить демонстрации в неличных сетях.
  • Имя должно быть чем-то вроде "Сервер развертывания IIS Express"

Ответ 2

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

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

к

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

Как только я сделал это и перезапустил IISExpress... Мне удалось перейти на мою машину Dev-Lee и посмотреть мое приложение из моего Xoom!

Ответ 3

Мы можем добавить несколько адресов привязки, отредактировав 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>

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

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

Ответ 4

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

Ответ 6

У меня было много проблем с тем, чтобы работать с 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", но на этот раз этого не произошло. И после этого это сработало.

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

Ответ 7

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

  • Получить IP-адрес вашего хоста: ipconfig в командной строке Windows
  • GoTo $(SolutionDir).vs\config\applicationHost.config
  • Найти
    <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>
  • Добавить: <binding protocol="http" bindingInformation="*:62549:192.168.178.108"/>
    с вашим IP-адресом
  • Запустите Visual Studio с правами администратора, и все должно работать.
  • Возможно, вы ищете некоторые проблемы с брандмауэром, если попытаетесь подключиться с удаленного устройства

Ключ в том, что Visual Studio получила собственный файл applicationHost.config!

Ответ 8

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

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

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

Ответ 9

Screenshot

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