Как включить удаленные запросы в IIS Express? Скотт Гатри написал, что это возможно, но он не сказал, как это сделать.
IIS Express разрешает внешний запрос
Ответ 1
Там появляется сообщение в блоге на сайте команды IIS, в котором объясняется, как включить удаленные подключения в IIS Express. Ниже приведена соответствующая часть этого сообщения:
В Vista и Win7 запустите в командной строке следующую команду:
netsh http add urlacl url=http://vaidesg:8080/ user=everyone
Для XP сначала установите средства поддержки Windows XP Service Pack 2. Затем запустите в командной строке следующую команду:
httpcfg set urlacl /u http://vaidesg1:8080/ /a D:(A;;GX;;;WD)
Ответ 2
Вы можете внести три изменения.
- Скажите, что сам IIS Express связывается со всеми IP-адресами и именами хостов. В вашем файле
.config
. Как правило:- VS 2015:
$(solutionDir)\.vs\config\applicationhost.config
- < VS 2015:
%userprofile%\My Documents\IISExpress\config\applicationhost.config
- VS 2015:
Найдите элемент привязки вашего сайта и добавьте
<binding protocol="http" bindingInformation="*:8080:*" />
- Установите бит Windows под названием "http.sys". В качестве администратора запустите команду:
netsh http add urlacl url=http://*:8080/ user=everyone
Где everyone
- группа окон. Используйте двойные кавычки для групп с пробелами типа "Tout le monde".
-
Разрешить IIS Express через брандмауэр Windows.
Запустить/Брандмауэр Windows с расширенной безопасностью/Входящие правила/Новое правило...
Программа
%ProgramFiles%\IIS Express\iisexpress.exe
ИЛИ Порт 8080 TCP
Теперь, когда вы начинаете iisexpress.exe
, вы должны увидеть сообщение, например
Успешно зарегистрированный URL-адрес "http://*: 8080/" для приложения "привет мир" "/"
Ответ 3
Я помню, что сталкивался с теми же проблемами при попытке этого рабочего процесса несколько месяцев назад.
Вот почему я написал простую прокси-утилиту специально для такого сценария: https://github.com/icflorescu/iisexpress-proxy.
Используя IIS Express Proxy, все становится довольно простым - не нужно "netsh http add urlacl url = vaidesg: 8080/user = everyone" или испортить с вашим "applicationhost.config".
Просто введите это в командной строке:
iisexpress-proxy 8080 to 3000
... и затем вы можете указать свои удаленные устройства на http://vaidesg:3000.
В большинстве случаев проще лучше.
Ответ 4
Ничего не работало для меня, пока я не нашел iisexpress-proxy.
Откройте командную строку как администратор, затем запустите
npm install -g iisexpress-proxy
затем
iisexpress-proxy 51123 to 81
Предполагая, что ваш проект Visual Studio открывается на localhost: 51123 и вы хотите получить доступ к внешнему IP-адресу x.x.x.x: 81
Изменить: просто упомянуть, что он отлично работает с noip.com
Ответ 5
Хороший ресурс Работа с SSL во время разработки проще с IISExpress от Scott Hanselman.
Зачем вам нужен раздел Получение IIS Express для внешнего обслуживания через порт 80
Ответ 6
В качестве ссылки на это:
netsh http add urlacl url=http://vaidesg:8080/ user=everyone
Это будет работать только на английских версиях Windows. Если вы используете локализованную версию, вам нужно заменить "все" на что-то еще, например:
- "Iedereen" при использовании голландской версии
- "Jeder" при использовании немецкой версии
- "Минденки" при использовании венгерской версии
В противном случае вы получите сообщение об ошибке (Create SDDL failed, Error: 1332)
Ответ 7
Если вы попробовали ответ на полковник Panic, но не работаете в Visual Studio, попробуйте следующее:
Добавить еще один <binding />
в конфигурацию IIS Express
<bindings>
<binding protocol="http" bindingInformation="*:8080:localhost" />
<binding protocol="http" bindingInformation="*:8080:hostname" />
</bindings>
Наконец, вы должны запустить Visual Studio в качестве администратора
Ответ 8
Принятый ответ на этот вопрос является руководством для того, чтобы IIS Express работал с webmatrix. Я нашел это руководство более полезным при попытке заставить его работать с VS 2010.
Я просто выполнил шаги 3 и 4 (запустил IIS Express как администратор) и должен был временно отключить мой брандмауэр, чтобы заставить его работать.
Ответ 9
Что мне помогло, щелкнул правой кнопкой мыши значок "IISExpress", "Показать все приложения". Затем, выбрав веб-сайт, я увидел, какой aplicationhost.config он использует, и исправление пошло отлично.
Ответ 10
Если вы работаете с 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 с правами администратора, и все должно работать.
- Возможно, вы ищете некоторые проблемы с брандмауэром, если попытаетесь подключиться с удаленного устройства
Ответ 11
Я решил это с установкой "Конвейер по Keyoti" в Visual Studio Professional 2015. Конвейер создает REMOTE-адрес (ваш IP) с портом (45455), который разрешает внешний запрос. Пример:
Конвейер позволяет тестировать веб-приложения из внешних планшетов и телефонов в вашей сети или из эмуляторов Android (без http://10.0.2.2:<hostport>
)
Шаги находятся в следующей ссылке:
https://marketplace.visualstudio.com/items?itemName=vs-publisher-1448185.ConveyorbyKeyoti
Ответ 12
У меня есть некоторые проблемы с использованием IIS Express в Win 8.1 и внешним запросом.
Я выполняю следующие шаги для отладки внешнего запроса:
- Установить IIS
- Настройка Visual Studio для использования локальных служб IIS (свойства страницы в вашем веб-проекте)
- Создайте эксклюзивный AppPool в IIS для работы с моим приложением
- В моем проекте я использую Oracle Client и должен быть 32 бита (64 бита не работают с Visual Studio), тогда мне нужно разрешить 32 бит в пуле приложений
- Настройка брандмауэра Windows для разрешения запроса на порт 80 (входящие правила)
Он работает!
Ответ 13
Вы можете попытаться настроить перенаправление портов вместо того, чтобы пытаться изменить конфигурацию IIS Express, добавляя новые правила HTTP.sys или запуская Visual Studio в качестве администратора.
В основном вам нужно переслать IP:PORT
ваш веб-сайт работает на другом свободном порту на вашем компьютере, но на внешнем сетевом адаптере, а не на localhost.
Дело в том, что IIS Express (по крайней мере, в Windows 10) привязывается к [::1]:port
, что означает, что он прослушивает порт IPv6. Вы должны принять это во внимание.
Вот как я сделал эту работу - http://programmingflow.com/2017/02/25/iis-express-on-external-ip.html
Надеюсь, что это поможет.
Ответ 14
У меня был локальный IIS, поэтому я только что создал правило перезаписи для моего отладочного порта... Я думаю, что это лучше и холоднее, чем другой метод, потому что его легче удалить, как только вы закончите... Вот как переписать выглядит..
<rewrite>
<rules>
<rule name="ReverseProxyInboundRule1" stopProcessing="true">
<match url="^dev/(.*)" />
<action type="Rewrite" url="http://localhost:47039/{R:1}" />
</rule>
</rules>
</rewrite>
VS также позволяет вам напрямую использовать локальный IIS (который затем позволяет удаленные подключения), но в свою очередь вы должны всегда запускать его как администратор... Мне это не нравится.
Ответ 15
Это то, что я сделал для Windows 10 с Visual Studio 2015 для обеспечения удаленного доступа, как с http, так и с https:
Первый шаг - привязать ваше приложение к вашему внутреннему IP-адресу. Запустите cmd
→ ipconfig
, чтобы получить адрес. Откройте файл /{project folder}/.vs/config/applicationhost.config
и прокрутите вниз, пока не найдете что-то вроде этого:
<site name="Project.Web" id="2">
<application path="/">
<virtualDirectory path="/" physicalPath="C:\Project\Project.Web" />
</application>
<bindings>
<binding protocol="http" bindingInformation="*:12345:localhost" />
</bindings>
</site>
Добавьте две новые привязки в bindings
. Вы также можете использовать HTTPS, если хотите:
<binding protocol="http" bindingInformation="*:12345:192.168.1.15" />
<binding protocol="https" bindingInformation="*:44300:192.168.1.15" />
Добавьте в свой брандмауэр следующее правило, откройте новое приглашение cmd
в качестве администратора и выполните следующие команды:
netsh advfirewall firewall add rule name="IISExpressWeb" dir=in protocol=tcp localport=12345 profile=private remoteip=localsubnet action=allow
netsh advfirewall firewall add rule name="IISExpressWebHttps" dir=in protocol=tcp localport=44300 profile=private remoteip=localsubnet action=allow
Теперь запустите Visual Studio как Administrator
. Щелкните правой кнопкой мыши файл проекта веб-проектов и выберите Properties
. Перейдите на вкладку Web
и нажмите Create Virtual Directory
. Если Visual Studio не запущен как Администратор, это, вероятно, не удастся. Теперь все должно работать.
Ответ 16
Если вы запустите Visual Studio из Admin, вы можете добавить только
<binding protocol="http" bindingInformation="*:8080:*" />
или
<binding protocol="https" bindingInformation="*:8443:*" />
в
%userprofile%\My Documents\IISExpress\config\applicationhost.config
Ответ 17
Мне не удалось выполнить запросы iis другим пользователям в моей локальной сети, все, что я должен был сделать (в дополнение к выше), перезапустил мой маршрутизатор BT Hub.
Ответ 18
Это безумно удивительно и даже охватывает HTTPS с довольно доменными именами:
http://www.hanselman.com/blog/WorkingWithSSLAtDevelopmentTimeIsEasierWithIISExpress.aspx
На самом деле удивительные части, которые я не мог найти нигде в SO, в случае, если вышеупомянутая ссылка никогда не исчезнет:
> C:\Program Files (x86)\IIS Express>IisExpressAdminCmd.exe Usage:
> iisexpressadmincmd.exe <command> <parameters> Supported commands:
> setupFriendlyHostnameUrl -url:<url>
> deleteFriendlyHostnameUrl -url:<url>
> setupUrl -url:<url>
> deleteUrl -url:<url>
> setupSslUrl -url:<url> -CertHash:<value>
> setupSslUrl -url:<url> -UseSelfSigned
> deleteSslUrl -url:<url>
>
> Examples: 1) Configure "http.sys" and "hosts" file for friendly
> hostname "contoso": iisexpressadmincmd setupFriendlyHostnameUrl
> -url:http://contoso:80/ 2) Remove "http.sys" configuration and "hosts" file entry for the friendly hostname "contoso": iisexpressadmincmd
> deleteFriendlyHostnameUrl -url:http://contoso:80/
Вышеуказанная утилита зарегистрирует сертификат SSL для вас! Если вы используете опцию -UseSelfSigned, это очень просто.
Если вы хотите сделать что-то трудное, неочевидной частью вам нужно сообщить HTTP.SYS, какой сертификат использовать, например:
netsh http add sslcert ipport=0.0.0.0:443 appid={214124cd-d05b-4309-9af9-9caa44b2b74a} certhash=YOURCERTHASHHERE
Certhash - это "Thumbprint", который вы можете получить из свойств сертификата в MMC.
Ответ 19
Я сделал следующее и смог подключиться:
1) изменилась привязка IIS express config от локального хоста к '*'
binding protocol = "http" bindingInformation = "*: 8888: *"
2) Определенное входящее правило на брандмауэре, чтобы разрешить конкретный порт для типа протокола: tcp
3) Добавьте следующую команду, чтобы добавить сетевую конфигурацию для вашего порта: netsh http add urlacl url = http://*: 8888/user = everyone
Ответ 20
Я решил эту проблему, используя обратный прокси-подход.
Я установил сервер wamp и использовал простую функцию обратного прокси-сервера веб-сервера apache.
Я добавил новый порт для прослушивания веб-сервера Apache (8081). Затем я добавил конфигурацию прокси-сервера как virtualhost для этого порта.
<VirtualHost *:8081>
ProxyPass / http://localhost:46935/
ProxyPassReverse / http://localhost:46935/
</VirtualHost>