Рабочий стол Parallels: доступ к локальному веб-приложению IIS из OS X (хост)
Я использую Windows 10 на OS X, используя Parallels Desktop (сеть находится в режиме SHARED). Мне нужно получить доступ к веб-приложениям, созданным в Visual Studio и работающим на IIS 10 с хоста. Например, для стандартного приложения, работающего в Windows по адресу http://localhost:1654/, я хотел бы получить к нему доступ из браузера Mac с помощью чего-то вроде http://%5Bip_virtual_machine%5D:1654.
Первым делом я полностью отключил брандмауэр Windows, отключил его в общедоступных и частных сетях, а также отключил службу брандмауэра в services.msc. Затем я проверил IP-адреса хоста и виртуальной машины. Запустив ifconfig на Mac, я получаю, что IP-адрес виртуальной машины равен 10.211.55.2, при запуске ipconfig в Windows я получаю, что IP-адрес виртуальной машины равен 10.211.55.3 (со шлюзом 10.211.55.1).
Я пытался получить доступ к веб-приложению, используя http://10.211.55.2:1654/ и http://10.211.55.3:1654/ но безуспешно. В первом случае я получаю неверный запрос - неверное имя хоста, а во втором - ERR_CONNECTION_REFUSED.
В случае, если брандмауэр все еще что-то делал, я также добавил правило для входящих подключений, разрешающее соединения для порта 1654, но результат тот же.
Я также заметил одну вещь: в файле applicationhost в C:\Windows\System32\inetsrv\config\applicationHost.config нет никаких ссылок на мои веб-приложения, созданные в Visual Studio. AFAIK Когда я запускаю веб-приложение в Visual Studio на IIS, привязка должна быть добавлена в файл applicationhost, но нет записей для любого из моих веб-приложений. Могу ли я иметь некоторые проблемы с IIS?
Другое дело: наоборот работает. Я могу получить доступ к локальному серверу node.js на моем Mac из виртуальной машины, используя http://10.211.55.2:%5Bport%5D.
Но мне нужен доступ с Mac к Windows IIS. Как я могу это сделать?
1 ответ
Хорошо, я получил это работает. Дополнительные шаги:
1) Откройте CMD или Powershell от имени администратора. Добавьте запись ACL URL для нужного вам порта:
netsh http add urlacl url=http://*:[port]/ user=everyone
2) Файл applicationhost с привязками в моем случае находится прямо в папке проекта Visual Studio. В частности, он находится в.vs / config / applicationhost.config. Откройте файл в текстовом редакторе и найдите строку с информацией о привязках для вашего приложения, что-то вроде
<bindings>
<binding protocol="http" bindingInformation="*:1654:localhost" />
</bindings>
Добавьте еще одну запись с IP-адресом вашей виртуальной машины, например так:
<bindings>
<binding protocol="http" bindingInformation="*:1654:localhost" />
<binding protocol="http" bindingInformation="*:1654:10.211.55.3" />
</bindings>
3) (** Необязательно: может не потребоваться ***) В файле applicationhost найдите запись
<section name="anonymousAuthentication" overrideModeDefault="Deny" />
и изменить его на
<section name="anonymousAuthentication" overrideModeDefault="Allow" />
Теперь я могу получить доступ к веб-приложению, работающему на IIS, с Mac, используя адрес http://10.211.55.3:1654/.
Надеюсь это поможет.
Принятый ответ не сработал для меня, но я, наконец, добился успеха после выполнения описанных здесь шагов. Моя установка состоит из Parallels 14, работающей на macOS 10.14.2, и Visual Studio 2017, работающей на Windows 10.
В итоге:
- В Parallels убедитесь, что для вашего Типа сети установлено значение "Общая сеть" и что включен "Общий доступ к приложениям Mac с Windows".
- В вашей виртуальной машине Windows откройте PowerShell, введите
ipconfig
и скопируйте IPv4-адрес вашей виртуальной машины. Затем откройте "Настройки", перейдите в "Система"> "О программе" и скопируйте имя устройства вашей виртуальной машины. - В macOS добавьте запись в ваш
/etc/hosts
файл, который отображает IP-адрес вашей виртуальной машины на имя устройства, например10.211.55.3 your-device-name
- Вернитесь в виртуальную машину Windows, в папку для проекта Visual Studio, отредактируйте
<binding>
ключ в.vs/config/applicationhost.config
(Обратите внимание, что.vs
скрытая папка), чтобы использовать имя устройства вашей виртуальной машины вместоlocalhost
например,<binding protocol="http" bindingInformation="*:1234:your-device-name" />
- Откройте PowerShell от имени администратора и выполните следующую команду, чтобы включить внешний доступ, используя имя устройства вашей виртуальной машины и порт из шага № 4:
netsh http add urlacl url=http://your-device-name:1234/ user=everyone
- Откройте брандмауэр Windows и добавьте новые входящие и исходящие правила для своего проекта. Для обоих правил выберите "Порт" в качестве типа правила и "TCP" в качестве протокола, введите порт с шага № 4 и выберите "Разрешить соединение"
- В Visual Studio перейдите в свойства своего проекта, перейдите на вкладку "Интернет" и измените URL своего проекта, чтобы использовать имя устройства Windows вместо
localhost
например,http://your-device-name:1234/
, Установите флажок "Переопределить корневой URL-адрес приложения" и снова введите этот же URL-адрес. - Отладка вашего проекта с помощью браузера "Открыть в Mac". Если вы не видите эту опцию, нажмите "Обзор с помощью...", затем "Добавить...", а затем добавьте запись, которая указывает на
C:\Program Files (x86)\Parallels\Parallels Tools\SIA\SharedIntApp.exe
После отладки ваше приложение запустится в Safari (или в браузере Mac по умолчанию) по адресу http://your-device-name:1234
!
- Включите IIS(информационные службы Интернета) из функций Windows.
- Зайдите в cmd и получите ip виртуальной машины Windows.
- На вашем Mac используйте IP-адрес компьютера с Windows в качестве локального.
Просто добавьте: при использовании ядра asp.net и пустельги (в Parallels) и желании подключиться к работающему серверу с вашего Mac Host, вы можете запустить сервер, используя локальный IP-адрес гостевой машины Windows. Итак, выполните IPCONFIG и получите локальный IP-адрес:
WebHost
.CreateDefaultBuilder()
.UseStartup(startupType)
.UseUrls("https://10.211.55.3:5001")
.ConfigureSettings(servicesToAdd)
.Build()
.Run();
Это позволит вам подключиться, например, к https://10.211.55.3:5001/api/values с вашего HOST mac