У меня есть веб-сайт (MVC3), который для разработки размещен в IIS Express. (Я столкнулся с ошибкой Cassini Devserver и должен был обновиться...) Теперь мне интересно, можно ли другим машинам на моей локальной сети (за маршрутизатором) видеть сайт, размещенный на моей машине? (например, если я напишу http://my.local.ip:port в браузере в той же локальной сети, что и я, будет ли загрузка страницы?)
Использование IIS Express для размещения веб-сайта (временно)
Ответ 1
По умолчанию IIS Express обслуживает только запросы localhost. Чтобы обслуживать внешние запросы, отредактируйте файл applicationhost.config
(расположенный в %userprofile%\documents\iisexpress\config\
) и измените localhost
на '*'
или ваше имя машины. (помните, что для привязки не-localhost вы должны работать как администратор или устанавливать URL-адрес acl в качестве администратора, а затем запускать iisexpress как не-администратор)
Ответ 2
В качестве альтернативы вы можете использовать что-то вроде AnalogX PortMapper, чтобы действовать как небольшой прокси-сервер loopback, чтобы туннелировать приватные локальные хосты, чтобы публично открывать порты.
Например,
- IISExpress локально привязан к localhost: 8080
- PortMapper порт 9090 настроен для передачи трафика на localhost: 8080
Фактически любое соединение на порту 9090 (открывается PortMapper) будет туннелироваться до localhost: 8080; тем самым минуя всю нецензуру, которая иногда может быть болью.
Ниже приведена моя конфигурация:
Преимущество использования этого метода проксирования заключается в том, что он не навсегда открывает открытый IISExpress порт в локальном блоке dev.
Редко, бывают случаи, когда я хочу публично открыть порт для встреч; но большую часть времени порт должен быть закрыт и доступен только локально. Изменение правил брандмауэра на маршрутизаторе каждый раз является болью. Здесь, как у меня есть настройки:
- Мой брандмауэр маршрутизатора перенаправляет 9090 порт PortMapper
- PortMapper продолжает проксирование трафика до IISExpress (прослушивание 8080) только в том случае, если выполняется PortMapper.
Примечание
Не забудьте закрыть все окна PortMapper, чтобы изменения вступили в силу.
Примечание 2
Как описано другими, вам может потребоваться настроить привязки IISExpress для вашего приложения в
My Documents\IISExpress\applicationhost.config
project\.vs\config\applicationhost.config
к чему-то вроде:
<bindings>
<!-- bindingInformaiton format:
IPToBindTo:Port:DNSHostName -->
<!--OLD:
<binding protocol="http" bindingInformation="*:8080:localhost"/>-->
<!--Change '*' to 127.0.0.1 and remove 'localhost' right of the port number
to avoid invalid DNS hostname errors -->
<binding protocol="http" bindingInformation="127.0.0.1:8080:" />
</bindings>
Ответ 3
Я считаю, что есть три способа сделать это успешным:
1) Добавьте запись dns или записи хостов, чтобы другие машины могли искать IP-адрес dev машины
2) Добавьте привязку к applicationhost.config в% userprofile/documents/IISExpress/Config, подобный этому
<site name="MobileDashboard(2)" id="7">
<bindings>
...
<binding protocol="http" bindingInformation="*:yourport#:yourmachinendnsname" />
</bindings>
</site>
3) Запустите команду здесь, чтобы разрешить входящие запросы:
netsh http add urlacl url=http://yourmachinendnsname:yourport#/ user=everyone
Ответ 4
Ответ в этом потоке велик, он просто оставляет исключения брандмауэра.
netsh advfirewall firewall add rule name="IIS Express (non-SSL)" action=allow protocol=TCP dir=in localport=8000
netsh advfirewall firewall add rule name="IIS Express (SSL)" action=allow protocol=TCP dir=in localport=44300
Из комментариев @http://blogs.iis.net/vaidyg/archive/2010/07/29/serving-external-traffic-with-webmatrix-beta.aspx
Ответ 5
Тренер Custom Rule в Fiddler из http://blogs.microsoft.co.il/blogs/shair/archive/2008/12/15/how-to-use-fiddler-on-localhost.aspx работал у меня в конце концов.
Ответ 6
да, вы можете настроить так много сайтов, использующих iis express для локального использования lan здесь, это ссылка Доступ к локальным сайтам из Lan IIS Express, которые объясняют, как для достижения этой цели.