Как включить внешний запрос в IIS Express?

Как включить удаленные запросы в IIS Express? Скотт Гатри написал, что возможно

21 ответов


на сайте команды 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)


есть три изменения, которые вам, возможно, потребуется сделать.

  1. скажите IIS Express для привязки ко всем ip-адресам и именам хостов. В . Типично:
    • VS 2015: $(solutionDir)\.vs\config\applicationhost.config
    • %userprofile%\My Documents\IISExpress\config\applicationhost.config

найдите элемент привязки вашего сайта и добавьте

    <binding protocol="http" bindingInformation="*:8080:*" />
  1. настройте бит Windows, называемый ' http.Сыс'. Как администратор, запустите команда:
    netsh http add urlacl url=http://*:8080/ user=everyone

здесь everyone является группой windows. Используйте двойные кавычки для групп с пробелами, такими как"Tout le monde".

  1. разрешить IIS Express через Брандмауэр Windows.

    пуск / Брандмауэр Windows с расширенной безопасностью / входящими правилами / новым правилом...

    программа %ProgramFiles%\IIS Express\iisexpress.exe
    Или порт 8080 TCP

теперь, когда вы начинаете iisexpress.exe вы должны увидеть сообщение такие как

успешно зарегистрированный URL "http://*: 8080 /" для сайта "hello world" application"/"


Я помню, что столкнулся с теми же проблемами при попытке этого рабочего процесса несколько месяцев назад.

именно поэтому я написал простую прокси-утилиту специально для такого сценария:https://github.com/icflorescu/iisexpress-proxy.

С помощью IIS Express Proxy, все становится довольно просто - нет необходимости " netsh http добавить urlacl url=vaidesg: 8080 / user=everyone "или испортить" applicationhost.конфигурация."

просто вопрос это в командной строке:

iisexpress-proxy 8080 to 3000

...и затем вы можете указать удаленные устройства на http://vaidesg:3000.

в большинстве случаев проще лучше.


ничего не работало для меня, пока я не нашел iisexpress-прокси.

Откройте командную строку как администратор, затем запустите

npm install -g iisexpress-proxy

затем

iisexpress-proxy 51123 to 81

предполагая, что ваш проект Visual Studio открывается на localhost: 51123, и вы хотите получить доступ к внешнему IP-адресу x.X. X. x: 81

Edit: просто упомянуть, что он отлично работает с noip.com


хороший ресурс работа с SSL во время разработки проще с IISExpress Скотт Хансельман.

Что вы после раздела получение IIS Express для внешнего обслуживания через порт 80


в качестве примечания к этому:

netsh http add urlacl url=http://vaidesg:8080/ user=everyone

Это будет работать только на английской версии Windows. Если вы используете локализованную версию, вы должны заменить "все" на что-то другое, например:

  • "Iedereen" при использовании голландской версии
  • "Jeder" при использовании немецкой версии
  • "Mindenki" при использовании венгерской версии

в противном случае вы получите ошибку (создать SDDL не удалось, ошибка: 1332)


Я решил это с установкой "конвейера Keyoti" в Visual Studio Professional 2015. Конвейер генерирует удаленный адрес (Ваш IP) с портом (45455), который включает внешний запрос. Пример:

enter image description here

конвейер позволяет тестировать веб-приложения с внешних планшетов и телефонов в сети или с эмуляторов Android (без http://10.0.2.2:<hostport>)

действия, описанные в следующей ссылке :

https://marketplace.visualstudio.com/items?itemName=vs-publisher-1448185.ConveyorbyKeyoti


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

  1. получить IP-адрес хоста:ipconfig в командной строке Windows
  2. перейти

    $(SolutionDir)\.vs\config\applicationHost.config
    
  3. найти

    <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>
    
  4. добавить: <binding protocol="http" bindingInformation="*:62549:192.168.178.108"/>
    с вашим IP-адресом

  5. запустите Visual Studio с правами администратора, и все должно работать
  6. возможно, искать некоторые проблемы брандмауэра при попытке подключения с удаленного

Если вы пытались ответ полковника паники но не работает в Visual Studio, попробуйте этот:

добавить еще один <binding /> в конфигурации IIS Express

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

наконец, вы должны запустите Visual Studio как Admin


Что мне помогло, это щелкнуть правой кнопкой мыши значок "IISExpress", "показать все приложения". Затем выберите сайт и увидел, что aplicationhost.config он использует, и коррекция прошла отлично.

IISExpress configuration


принятый ответ на этот вопрос является руководством для получения IIS Express для работы с webmatrix. Я нашел данное руководство более полезно при попытке заставить его работать с VS 2010.

Я просто следовал шагам 3 & 4 (запуск IIS Express как администратор) и должен был временно отключить мой брандмауэр, чтобы заставить его работать.


это то, что я сделал для 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 подскажите как admin и выполните следующие команды:

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. Щелкните правой кнопкой мыши файл проекта web projects и выберите Properties. Иди в Web tab и нажмите Create Virtual Directory. Если Visual Studio не запускается от имени администратора, это, вероятно, не удастся. Теперь все должно работать.

enter image description here


вы можете попробовать настроить переадресацию портов вместо того, чтобы пытаться изменить конфигурацию 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

надеюсь, что это помогает.


У меня есть некоторые проблемы с использованием IIS Express в Win 8.1 и внешний запрос.

Я выполняю эти шаги для отладки внешнего запроса:

  1. установить IIS
  2. настройка Visual Studio для использования локальных IIS (свойства страницы в веб-проекте)
  3. создайте эксклюзивный AppPool в IIS для работы с моим приложением
  4. в моем проекте я использую клиент Oracle и должен быть 32bits (64 бита не работают с Visual Studio), тогда мне нужно разрешить 32 бит в пуле приложений
  5. настройте Брандмауэр Windows, чтобы разрешить запрос в порту 80 (входящие правила)

Это работает!


Если вы запустите Visual Studio из Admin, вы можете добавить только

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

или

<binding protocol="https" bindingInformation="*:8443:*" />

на

%userprofile%\My Documents\IISExpress\config\applicationhost.config

У меня был включен локальный 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 напрямую (что затем позволяет удаленные подключения), но в свою очередь вы всегда должны запускать его как администратор... Мне это не нравится.


Я не смог обслуживать запросы iis другим пользователям в моей локальной сети, все, что мне нужно было сделать (в дополнение к вышесказанному), это перезапустить мой маршрутизатор BT Hub.


это безумно потрясающе и даже охватывает HTTPS с красивыми доменными именами:

http://www.hanselman.com/blog/WorkingWithSSLAtDevelopmentTimeIsEasierWithIISExpress.aspx

действительно удивительные части, которые я не мог найти нигде больше, так что в случае, если вышеуказанная ссылка когда-либо исчезнет:

> 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 добавить urlacl url=http://*: 8888 / user=everyone


Я решил эту проблему, используя обратный прокси-подход.

Я установил сервер wamp и использовал простую функцию обратного прокси веб-сервера apache.

Я добавил новый порт для прослушивания веб-сервера Apache (8081). Затем я добавил конфигурацию прокси в качестве virtualhost для этого порта.

<VirtualHost *:8081>
ProxyPass / http://localhost:46935/
ProxyPassReverse / http://localhost:46935/
</VirtualHost>

[диалоговое окно свойств проекта]

для разработки с использованием VisualStudio 2017 и API-проекта NetCore:

1) в Cmd-Box: ipconfig /all для определения IP-адреса

2a) введите полученный IP-адрес в свойствах проекта - > вкладка Debug

2b) выберите порт и прикрепите его к IP-адресу с шага 2a.

3) Добавьте правило allow в брандмауэр, чтобы разрешить входящий TCP-трафик на выбранном Порту (мой брандмауэр запускается с помощью диалог: "заблокировать или добавить правило в брандмауэр"). Добавить будет в этом случае делать трюк.

недостаток данного решения:

1) Если вы используете динамический IP-адрес, вам нужно повторить шаги выше, если был назначен другой IP-адрес.

2) у вас на сервере теперь есть открытый порт, который вы можете забыть, но этот открытый порт остается приглашением для нежелательных гостей.