Настройка 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".
Ответ 5
Мы создали бесплатное расширение VS (2012, 2013, 2015) под названием Conveyor, которое позволяет это - вы можете найти его через меню Tools- > Extensions... в VS или на сайте галереи https://visualstudiogallery.msdn.microsoft.com/a429dbb7-a982-4541-b401-934375c02c0f?SRC=Home
Ответ 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".