Как включить удаленные запросы в IIS Express? Скотт Гатри написал, что это возможно, но не сказал как.
Как включить удаленные запросы в IIS Express? Скотт Гатри написал, что это возможно, но не сказал как.
Ответы:
На сайте группы IIS есть пост в блоге, в котором объясняется, как включить удаленные подключения в IIS Express . Вот подходящая часть этого поста:
В Vista и Win7 выполните следующую команду из административного приглашения:
netsh http add urlacl url=http://vaidesg:8080/ user=everyone
Для XP сначала установите средства поддержки Windows XP с пакетом обновления 2 (SP2). Затем выполните следующую команду из административного запроса:
httpcfg set urlacl /u http://vaidesg1:8080/ /a D:(A;;GX;;;WD)
netsh
команда, позволяющая подключаться к любому имени хоста?
user={PARAM_USER}
будет на вашем родном языке.
user=todos
вместо user=everyone
.
Вам может потребоваться внести три изменения.
.config
файле. Как правило:
$(solutionDir)\.vs\config\applicationhost.config
%userprofile%\My Documents\IISExpress\config\applicationhost.config
Найдите обязательный элемент вашего сайта и добавьте
<binding protocol="http" bindingInformation="*:8080:*" />
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 /" для сайта "hello world" application "/"
users=everyone
для netsh
(второй этап) может вызвать ошибку 1789. Решение заключается в преобразовании everyone
к соответствующему имени группы на вашем языке.
Project Url
, если я ввожу звездочку для имени хоста, это выдает ошибку. Если я ввожу что-нибудь еще, он пытается создать новый виртуальный каталог. Он не ссылается на запись в application.config.
bindingInformation="*:8080:hostname"
и на шаге 2 url=http://hostname:8080/
, а в свойствах вашего веб-проекта Visual Studio на вкладке Web установите для Project Url значение http://hostname:8080/
. Удалите *
urlacl, если вы его уже создали; это не сработает, если у вас есть оба. Наконец, URL, по которому вы переходите в своем веб-браузере, должен указывать имя хоста, а не localhost.
<binding protocol="http" bindingInformation="*:8080:localhost" />
Я помню, что сталкивался с такими же проблемами при попытке этого рабочего процесса несколько месяцев назад.
Вот почему я написал простую прокси-утилиту специально для такого сценария: https://github.com/icflorescu/iisexpress-proxy .
С помощью IIS Express Proxy все становится довольно просто - не нужно «netsh http add urlacl urlcl = vaidesg: 8080 / user = Everyone» или связываться с вашим «applicationhost.config».
Просто введите это в командной строке:
iisexpress-proxy 8080 to 3000
… А затем вы можете указать свои удаленные устройства на http: // vaidesg: 3000 .
В большинстве случаев проще, лучше.
У меня ничего не получалось, пока я не нашел iisexpress-прокси .
Откройте командную строку как администратор, затем запустите
npm install -g iisexpress-proxy
тогда
iisexpress-proxy 51123 to 81
при условии, что ваш проект Visual Studio открывается на localhost: 51123 и вы хотите получить доступ по внешнему IP-адресу xxxx: 81
Изменить: я в настоящее время использую ngrok
В качестве ссылки на это:
netsh http add urlacl url=http://vaidesg:8080/ user=everyone
Это будет работать только на английских версиях Windows. Если вы используете локализованную версию, вы должны заменить «всех» чем-то другим, например:
В противном случае вы получите ошибку (Ошибка создания SDDL, Ошибка: 1332)
Хороший ресурс - Работать с SSL во время разработки проще с IISExpress Скотта .
То, что вам нужно, это раздел Настройка IIS Express для внешнего обслуживания через порт 80
Если вы работаете с Visual Studio, выполните следующие действия для доступа к IIS-Express через IP-адрес:
ipconfig
в командной строке WindowsПерейти к
$(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-адреса
Я решил это с помощью установки «Конвейер по Keyoti» в Visual Studio Professional 2015. Конвейер сгенерировал УДАЛЕННЫЙ адрес (ваш IP) с портом (45455), который разрешает внешний запрос. Пример:
Конвейер позволяет тестировать веб-приложения с внешних планшетов и телефонов в сети или с эмуляторов Android (без http://10.0.2.2:<hostport>
)
Шаги в следующей ссылке:
https://marketplace.visualstudio.com/items?itemName=vs-publisher-1448185.ConveyorbyKeyoti
Если вы пробовали ответ полковника Паника но не работаете в Visual Studio, попробуйте следующее:
Добавьте еще один <binding />
в вашем конфиге IIS Express
<bindings>
<binding protocol="http" bindingInformation="*:8080:localhost" />
<binding protocol="http" bindingInformation="*:8080:hostname" />
</bindings>
Наконец, вы должны запустить Visual Studio от имени администратора
Что мне помогло, так это щелкнув правой кнопкой мыши значок «IISExpress», «Показать все приложения». Затем выбрав веб-сайт, я увидел, какой aplicationhost.config он использует, и исправление прошло отлично.
Это то, что я сделал для 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 не запускается от имени администратора, это, вероятно, завершится ошибкой. Теперь все должно работать.
Принятым ответом на этот вопрос является руководство по настройке IIS Express для работы с веб-матрицей. Я нашел это руководство более полезным при попытке заставить его работать с VS 2010.
Я просто выполнил шаги 3 и 4 (запустил IIS Express от имени администратора) и мне пришлось временно отключить брандмауэр, чтобы он заработал.
Вы можете попытаться настроить переадресацию портов вместо того, чтобы изменять конфигурацию IIS Express, добавлять новые правила HTTP.sys или запускать Visual Studio от имени администратора.
По сути, вам нужно перенаправить IP:PORT
ваш веб-сайт на другой свободный порт вашей машины, но не на локальный хост, а на внешний сетевой адаптер.
Дело в том, что IIS Express (по крайней мере, в Windows 10) привязывается к [::1]:port
значению, что он прослушивает порт IPv6. Вы должны принять это во внимание.
Вот как я сделал эту работу - http://programmingflow.com/2017/02/25/iis-express-on-external-ip.html
Надеюсь, поможет.
Самый простой и крутой способ, который я нашел, - это использовать (установка занимает 2 минуты):
Это будет работать с чем-либо, работающим на localhost. Просто зарегистрируйтесь, запустите небольшую исполняемую программу, и все, что вы запускаете на локальном хосте, получит общедоступный URL, к которому вы можете получить доступ из любого места.
Это хорошо для демонстрации материала вашим удаленным товарищам по команде, не тратить время на настройку IIS или брандмауэры. Хотите остановить доступ, просто прервите исполняемый файл.
ngrok authtoken xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
ngrok http -host-header=localhost 89230
при условии, что 89230 является вашим портом IIS Express
Вы также можете запустить несколько портов даже на бесплатном плане
У меня есть некоторые проблемы с использованием IIS Express в Win 8.1 и внешним запросом.
Я следую за этими шагами, чтобы отладить внешний запрос:
Работает!
Если вы запускаете Visual Studio из Admin, вы можете добавить только
<binding protocol="http" bindingInformation="*:8080:*" />
или
<binding protocol="https" bindingInformation="*:8443:*" />
в
%userprofile%\My Documents\IISExpress\config\applicationhost.config
$(SolutionDir).vs\config\applicationHost.config
а также мне пришлось открыть порт (8443) приложения в брандмауэре Windows.
У меня был включен локальный 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 напрямую (который затем разрешает удаленные подключения), но, в свою очередь, вы всегда должны запускать его как администратор ... Мне это не нравится.
Я решил эту проблему, используя метод обратного прокси.
Я установил wamp-сервер и использовал простую функцию обратного прокси веб-сервера apache.
Я добавил новый порт для прослушивания веб-сервера Apache (8081). Затем я добавил конфигурацию прокси как виртуальный хост для этого порта.
<VirtualHost *:8081>
ProxyPass / http://localhost:46935/
ProxyPassReverse / http://localhost:46935/
</VirtualHost>
Я сделал все эти шаги, и ничто не помогло мне. И что мне нужно, это просто запустить мое приложение через IIS Express ...
Надеюсь, поможет.
Я не смог обслуживать запросы iis другим пользователям в моей локальной сети, и все, что мне нужно было сделать (в дополнение к вышесказанному), это перезапустить мой маршрутизатор BT Hub.
Это безумно круто и даже покрывает 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 - это «отпечаток», который вы можете получить из свойств сертификата в MMC.
Я сделал следующее и смог подключиться:
1) изменена привязка конфигурации IIS Express с локального хоста на '*'
протокол привязки = "http" bindingInformation = "*: 8888: *"
2) Определено входящее правило на брандмауэре, чтобы разрешить определенный порт для типа протокола: tcp
3) Добавьте следующую команду для добавления конфигурации сети для вашего порта: netsh http add urlacl url = http: // *: 8888 / user = each
[диалог свойств проекта]
Для разработки с использованием VisualStudio 2017 и API-проекта NetCore:
1) В Cmd-Box: ipconfig / all для определения IP-адреса
2a) Введите полученный IP-адрес в свойствах проекта -> вкладка «Отладка».
2b) Выберите порт и присоедините его к IP-адресу из шага 2a.
3) Добавьте правило разрешений в брандмауэр, чтобы разрешить входящий TCP-трафик на выбранный порт (мой брандмауэр вызвал диалоговое окно: «Заблокировать или добавить правило в брандмауэр»). Добавить будет в этом случае делать свое дело.
Недостаток решения выше:
1) Если вы используете динамический IP-адрес, вам необходимо повторить действия, описанные выше, в случае, если был назначен другой IP-адрес.
2) У вашего сервера теперь есть открытый порт, который вы можете забыть, но этот открытый порт остается приглашением для нежелательных гостей.