Як я можу включити віддалені запити в IIS Express? Скотт Гетрі написав, що це можливо, але він не сказав як.
Як я можу включити віддалені запити в IIS Express? Скотт Гетрі написав, що це можливо, але він не сказав як.
Відповіді:
Зараз на сайті команди 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)
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 /" для веб-сайту "привіт світ", програма зареєстрована "/"
users=everyone
для netsh
(другий етап) може викликати помилку 1789. Рішення полягає в перетворенні everyone
до відповідного імені групи на вашій мові.
Project Url
, якщо я введіть зірочку для імені хоста, він видає помилку. Якщо я ввожу щось інше, він намагається створити новий віртуальний каталог. Він не посилається на запис у application.config.
bindingInformation="*:8080:hostname"
та на кроці 2 url=http://hostname:8080/
, а також у властивостях веб-проекту Visual Studio на вкладці Веб встановити URL-адресу проекту http://hostname:8080/
. Видаліть *
urlacl, якщо ви його вже створили; він не працюватиме, якщо у вас обоє. Нарешті, URL-адреса, яку ви переходите у свій веб-браузер, має посилатися на ім’я хоста, а не localhost.
<binding protocol="http" bindingInformation="*:8080:localhost" />
Я пам’ятаю, що стикався з тими ж проблемами, намагаючись цей робочий процес кілька місяців тому.
Ось чому я написав просту утиліту проксі спеціально для такого сценарію: https://github.com/icflorescu/iisexpress-proxy .
Використовуючи проксі- сервер IIS , все стає досить простим - не потрібно "netsh http додавати urlacl url = vaidesg: 8080 / user = all" або псуватися зі своїм "applicationhost.config".
Просто видайте це в командному рядку:
iisexpress-proxy 8080 to 3000
… І тоді ви можете вказати віддалені пристрої на http: // vaidesg: 3000 .
У більшості випадків простіше IS краще.
Ніщо не працювало для мене, поки я не знайшов iisexpress-proxy .
Відкрийте командний рядок як адміністратор, а потім запустіть
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. Конвеєр генерує REMOTE-адресу (ваш 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
ваш веб-сайт на якийсь інший вільний порт на вашій машині, але на зовнішній мережевий адаптер, а не на localhost.
Вся справа в тому, що IIS Express (принаймні в Windows 10) пов'язується [::1]:port
сенсу, який він слухає на порту IPv6. Вам потрібно це врахувати.
Ось як я зробив цю роботу - http://programmingflow.com/2017/02/25/iis-express-on-external-ip.html
Сподіваюся, це допомагає.
Найпростіший і найкрутіший спосіб, який я знайшов, - це використовувати (на налаштування потрібно 2 хвилини):
Він буде працювати з усім, що працює на localhost. Просто зареєструйтесь, запустіть невелику виправдану програму, і все, що ви працюєте на localhost, отримує загальнодоступну URL-адресу, до якої ви можете отримати доступ з будь-якого місця.
Це добре для показу речей своїм віддаленим товаришам по команді, не сварившись із налаштуваннями IIS або брандмауерами. Хочете зупинити доступ просто скасувати виконуваний файл.
ngrok authtoken xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
ngrok http -host-header=localhost 89230
якщо припустити, що 89230 - це ваш порт IIS Express
Ви також можете запускати кілька портів навіть у вільному плані
У мене є проблеми з використанням IIS Express у Win 8.1 та зовнішнім запитом.
Я виконую ці кроки для налагодження зовнішнього запиту:
Це працює!
Якщо ви запустили Visual Studio від адміністратора, ви можете додати просто
<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 для цього порту.
<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 - це "Thumbprint", який можна отримати із властивостей сертифіката в MMC.
Я зробив наступне і зміг підключитися:
1) змінено прив'язку конфігурації IIS з локального хоста на '*'
протокол прив'язки = "http "indingInformation =" *: 8888: * "
2) Визначено вхідне правило на брандмауері, щоб дозволити конкретний порт для типу протоколу: tcp
3) Додайте таку команду, щоб додати конфігурацію мережі для вашого порту: netsh http add urlacl url = http: // *: 8888 / user = every
[діалог властивостей проекту]
Для розробки за допомогою VisualStudio 2017 та NetCore API-проекту:
1) У Cmd-Box: ipconfig / all для визначення IP-адреси
2a) Введіть отриману IP-адресу в розділі Властивості проекту-> Вкладка налагодження
2b) Виберіть порт і приєднайте його до IP-адреси з кроку 2a.
3) Додайте правило дозволу у брандмауер, щоб дозволити вхідний TCP-трафік на вибраному порту (мій брандмауер спрацьовує діалоговим вікном: "Блокувати або додати правило до брандмауера"). У цьому випадку Add зробить трюк.
Недолік рішення вище:
1) Якщо ви використовуєте динамічну IP-адресу, вам потрібно повторити описані вище кроки, якщо інша IP-адреса була призначена.
2) Тепер у вашого сервера відкритий порт, який ви можете забути, але цей відкритий порт залишається запрошенням для небажаних гостей.