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

334

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

  • 16
    Для этого есть бесплатное расширение VS, которое мы написали visualstudiogallery.msdn.microsoft.com/…
  • 0
    @ JimW Джим, ты создатель плагина? Не могли бы вы объяснить, как работает это чудо разработки программного обеспечения?
Показать ещё 5 комментариев
Теги:
iis-express

20 ответов

322
Лучший ответ

Там появляется сообщение в блоге на сайте команды 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)

  • 10
    Не забудьте изменить URL в командной строке.
  • 116
    В случае ошибки 503, смотрите это: stackoverflow.com/questions/5442551/…
Показать ещё 16 комментариев
277

Вы можете внести три изменения.

  • Скажите, что сам IIS Express связывается со всеми IP-адресами и именами хостов. В вашем файле .config. Как правило:
    • VS 2015: $(solutionDir)\.vs\config\applicationhost.config
    • < VS 2015: %userprofile%\My Documents\IISExpress\config\applicationhost.config

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

    <binding protocol="http" bindingInformation="*:8080:*" />
  1. Установите бит Windows под названием "http.sys". В качестве администратора запустите команду:
    netsh http add urlacl url=http://*:8080/ user=everyone

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

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

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

    Программа %ProgramFiles%\IIS Express\iisexpress.exe
    ИЛИ Порт 8080 TCP

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

Успешно зарегистрированный URL-адрес "http://*: 8080/" для приложения "привет мир" "/"

  • 1
    Отличный сводный список, спасибо! # 1 и # 3 мне хватило на Win7.
  • 4
    % userprofile% \ Мои документы \ IISExpress \ config
Показать ещё 18 комментариев
92

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

Вот почему я написал простую прокси-утилиту специально для такого сценария: 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.

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

  • 6
    Лучшее решение когда-либо. Большой!!!
  • 3
    Спасибо за отличное решение!
Показать ещё 13 комментариев
74

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

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

npm install -g iisexpress-proxy

затем

iisexpress-proxy 51123 to 81

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

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

  • 4
    Это отлично сработало для меня!
  • 5
    безболезненное решение
Показать ещё 15 комментариев
32

Хороший ресурс Работа с SSL во время разработки проще с IISExpress от Scott Hanselman.

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

  • 0
    В этом блоге рекомендуется изолировать порт 80 от «IISExpressWeb.exe». В текущей версии IIS Express отсутствует exe-имя с этим именем - есть только IISExpress.exe и IISExpressTray.exe. Изоляция подключений к любому из них предотвращает подключение извне; Устранение ограничения процесса позволяет подключаться. Какой правильный .exe для цели?
26

В качестве ссылки на это:

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

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

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

В противном случае вы получите сообщение об ошибке (Create SDDL failed, Error: 1332)

  • 1
    Спасибо, это вызвало ошибку у меня тоже. Так что решение Microsoft-ish ...
8

Если вы попробовали ответ на полковник Panic, но не работаете в Visual Studio, попробуйте следующее:

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

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

Наконец, вы должны запустить Visual Studio в качестве администратора

  • 0
    К сожалению, это, кажется, не работает для меня .. Я все еще получаю отказано в соединении, когда я пытаюсь получить доступ к своему локальному ip на порту 8080
  • 0
    @ThomasTeilmann, в Visual Studio мне пришлось открыть свойства веб-приложения и на вкладке «Веб» изменить «URL проекта», чтобы использовать альтернативное имя хоста вместо localhost.
Показать ещё 4 комментария
5

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

Изображение 1109

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

Шаги находятся в следующей ссылке:

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

  • 1
    Это работает отлично, и это безболезненно!
  • 1
    не работает для меня ... понятия не имею, почему
Показать ещё 7 комментариев
5

Если вы работаете с 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 с правами администратора, и все должно работать.
  • Возможно, вы ищете некоторые проблемы с брандмауэром, если попытаетесь подключиться с удаленного устройства
  • 2
    запустить от имени администратора - спасибо!
5

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

Изображение 1110

  • 1
    Этот ответ указал мне на другое решение, отредактировав applicationhost.config для принятия : 55665: вместо *: 55665: localhost
5

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

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

  • 0
    Команды, на которые вы ссылаетесь, теряют возможность отладки в Visual Studio, что, по крайней мере, на мой взгляд, делает их бессмысленными - использование IIS или любого другого удаленного сервера будет таким же хорошим или лучшим (поскольку вы можете настроить удаленную отладку по крайней мере на IIS). Если бы IIS Express не требовал прав администратора для запуска без localhost, это бы сработало. Очень надоедливый.
  • 0
    Это именно то, что я искал - спасибо! Я использую IIS Express с Visual Studio 2010 и собирался протестировать приложение ASP.NET MVC3 в моей локальной сети, и это было то, что мне нужно для этого работало :)
3

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

Надеюсь, что это поможет.

  • 0
    Я использую Windows 10 и привязка localhost к IPv6 была ключевой. Спасибо!
  • 0
    Компьютер, который я пытался настроить, имел другой локальный адрес. Он был назван "местный разработчик". Мне нужно было просто добавить привязку v4tov6 listenport = 3000 connectaddress = local-dev connectport = 60000, чтобы все заработало. Отличный пост, спасибо!
3

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

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

  • Установить IIS
  • Настройка Visual Studio для использования локальных служб IIS (свойства страницы в вашем веб-проекте)
  • Создайте эксклюзивный AppPool в IIS для работы с моим приложением
  • В моем проекте я использую Oracle Client и должен быть 32 бита (64 бита не работают с Visual Studio), тогда мне нужно разрешить 32 бит в пуле приложений
  • Настройка брандмауэра Windows для разрешения запроса на порт 80 (входящие правила)

Он работает!

2

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

  • 0
    Это тоже мое любимое решение, спасибо :) Мне просто нужно было сначала включить Reverse Proxy для IIS, а затем добавить это правило в мой web.config.
1

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

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

или

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

в

%userprofile%\My Documents\IISExpress\config\applicationhost.config
  • 1
    Я применил эту конфигурацию к $(SolutionDir).vs\config\applicationHost.config а также мне пришлось открыть порт (8443) приложения в брандмауэре Windows.
1

Это то, что я сделал для Windows 10 с Visual Studio 2015 для обеспечения удаленного доступа, как с http, так и с https:

Первый шаг - привязать ваше приложение к вашему внутреннему IP-адресу. Запустите cmdipconfig, чтобы получить адрес. Откройте файл /{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 не запущен как Администратор, это, вероятно, не удастся. Теперь все должно работать.

Изображение 1111

  • 0
    Работал на меня! :) Здесь также есть хороший пост: blog.kloud.com.au/2017/02/27/…
  • 0
    Я пробовал все остальное, включая ngrok, но безрезультатно. Это сработало с первой попытки.
0

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

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

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

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

Я сделал следующее и смог подключиться:

1) изменилась привязка IIS express config от локального хоста к '*'

binding protocol = "http" bindingInformation = "*: 8888: *"

2) Определенное входящее правило на брандмауэре, чтобы разрешить конкретный порт для типа протокола: tcp

3) Добавьте следующую команду, чтобы добавить сетевую конфигурацию для вашего порта:  netsh http add urlacl url = http://*: 8888/user = everyone

  • 0
    Поскольку вы подходите к этому вопросу через 6 лет после того, как он был задан, и уже есть 12 других ответов, было бы лучше, если бы вы отредактировали свой ответ, чтобы объяснить, как ваш ответ работает лучше, чем остальные 12 (или, по крайней мере, как он это отличается).
0

Это безумно удивительно и даже охватывает 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.

0

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню