Parallels desktop: access local IIS web application from OS X (host)
Ok I got it working. The additional steps are:
1) Open CMD or Powershell as administrator. Add a URL ACL entry for the port you need:
netsh http add urlacl url=http://*:[port]/ user=everyone
2) The applicationhost file with the bindings in my case is located directly inside the Visual Studio project folder. Specifically it is located at .vs/config/applicationhost.config. Open the file in a text editor and find the line with the bindings information for your application, something like
<bindings>
<binding protocol="http" bindingInformation="*:1654:localhost" />
</bindings>
Add an another entry with the IP of your virtual machine, like this:
<bindings>
<binding protocol="http" bindingInformation="*:1654:localhost" />
<binding protocol="http" bindingInformation="*:1654:10.211.55.3" />
</bindings>
3) (** Optional: may not be necessary ***) In the applicationhost file, find the entry
<section name="anonymousAuthentication" overrideModeDefault="Deny" />
and change it to
<section name="anonymousAuthentication" overrideModeDefault="Allow" />
Now I can access the web app running on IIS from the Mac using http://10.211.55.3:1654 address.
Hope this helps.
The accepted answer didn't work for me, but I finally had success after following the steps outlined here. My setup consists of Parallels 14 running on macOS 10.14.2, and Visual Studio 2017 running on Windows 10.
In summary:
- In Parallels, make sure your Network type is set to "Shared Network" and that "Share Mac applications with Windows" is enabled
- In your Windows VM, open PowerShell, enter
ipconfig
, and copy down your VM's IPv4 address. Then open Settings, go to System > About, and copy down your VM's device name - In macOS, add an entry to your
/etc/hosts
file that maps your VM's IP address to its device name, e.g.10.211.55.3 your-device-name
- Back in your Windows VM, in the folder for your Visual Studio project, edit the
<binding>
key in.vs/config/applicationhost.config
(note that.vs
is a hidden folder) to use your VM's device name instead oflocalhost
, e.g.<binding protocol="http" bindingInformation="*:1234:your-device-name" />
- Open PowerShell as an administrator and run the following command to enable external access, using your VM's device name and the port from step #4:
netsh http add urlacl url=http://your-device-name:1234/ user=everyone
- Open Windows Firewall and add new inbound and outbound rules for your project. For both rules, select "Port" as the rule type and "TCP" as the protocol, enter the port from step #4, and select "Allow the connection"
- In Visual Studio, go to your project's properties, click the "Web" tab, and change your project URL to use your Windows device name instead of
localhost
, e.g.http://your-device-name:1234/
. Check the box for "Override application root URL" and enter that same URL again - Debug your project using the "Open in Mac" browser. If you don't see this option, click "Browse With...", then "Add...", and then add an entry that points to
C:\Program Files (x86)\Parallels\Parallels Tools\SIA\SharedIntApp.exe
Upon debugging, your app will launch in Safari (or whatever your default Mac browser is) at http://your-device-name:1234
!