Parallels桌面:从OS X(主机)访问本地IIS Web应用程序

rev*_*evy 4 iis firewall parallels localhost virtual-machine

我正在使用Parallels Desktop在OS X上运行Windows 10(网络处于共享模式)。我需要从主机访问在Visual Studio上创建并在IIS 10上运行的Web应用程序。例如,对于在Windows上http:// localhost:1654上运行的通用应用程序,我想使用类似http:// [ip_virtual_machine]:1654的 Mac浏览器对其进行访问。

我要做的第一件事是完全关闭Windows防火墙,在公用和专用网络上禁用它,并在services.msc中禁用防火墙服务。接下来,我检查了主机和虚拟机的IP地址。在Mac上运行ifconfig时,我得到虚拟机的IP地址是10.211.55.2,而在Windows上运行ipconfig时,我得到虚拟机的IP地址是10.211.55.3(使用网关10.211.55.1)。

我尝试使用http://10.211.55.2:1654/http://10.211.55.3:1654/访问Web应用程序,但是没有运气。对于前者,我收到错误请求-无效的主机名响应,而对于后者,我得到ERR_CONNECTION_REFUSED。

万一防火墙仍然在做某些事情,我还添加了一个入站规则,以允许连接端口1654,但结果相同。

我还注意到一件事:在C:\ Windows \ System32 \ inetsrv \ config \ applicationHost.config中的applicationhost文件中,没有对在Visual Studio中创建的Web应用程序的任何引用。AFAIK当我在IIS上的Visual Studio中运行Web应用程序时,应将绑定添加到applicationhost文件中,但是我的任何Web应用程序都没有条目。IIS可能有问题吗?

另一件事:反过来工作。我可以使用http://10.211.55.2:[port]从虚拟机访问Mac上的node.js本地服务器。

但是我需要从Mac访问Windows IIS。我怎样才能做到这一点?

daG*_*GUY 9

接受的答案对我不起作用,但按照此处概述的步骤后我终于成功了。我的设置包括在 macOS 10.14.2 上运行的 Parallels 14 和在 Windows 10 上运行的 Visual Studio 2017。

总之:

  1. 在 Parallels 中,确保您的网络类型设置为“共享网络”并且启用“与 Windows 共享 Mac 应用程序”
  2. 在 Windows VM 中,打开 PowerShell,输入ipconfig并复制 VM 的 IPv4 地址。然后打开“设置”,转到“系统”>“关于”,然后复制虚拟机的设备名称
  3. 在 macOS 中,向文件中添加一个条目/etc/hosts,将虚拟机的 IP 地址映射到其设备名称,例如10.211.55.3 your-device-name
  4. 返回 Windows VM,在 Visual Studio 项目的文件夹中,编辑<binding>.vs/config/applicationhost.config(请注意,这.vs是一个隐藏文件夹)以使用 VM 的设备名称而不是localhost,例如<binding protocol="http" bindingInformation="*:1234:your-device-name" />
  5. 以管理员身份打开 PowerShell 并运行以下命令以使用 VM 的设备名称和步骤 #4 中的端口启用外部访问:netsh http add urlacl url=http://your-device-name:1234/ user=everyone
  6. 打开 Windows 防火墙并为您的项目添加新的入站和出站规则。对于这两个规则,选择“端口”作为规则类型,选择“TCP”作为协议,输入步骤 #4 中的端口,然后选择“允许连接”
  7. 在 Visual Studio 中,转到项目的属性,单击“Web”选项卡,然后更改项目 URL 以使用 Windows 设备名称而不是localhost,例如http://your-device-name:1234/。选中“覆盖应用程序根 URL”框并再次输入相同的 URL
  8. 使用“在 Mac 中打开”浏览器调试您的项目。如果您没有看到此选项,请单击“浏览方式...”,然后单击“添加...”,然后添加一个指向的条目C:\Program Files (x86)\Parallels\Parallels Tools\SIA\SharedIntApp.exe

调试后,您的应用程序将在 Safari(或您的默认 Mac 浏览器)中启动,网址为http://your-device-name:1234


rev*_*evy 6

好吧,我知道了。其他步骤是:

1)以管理员身份打开CMD或Powershell。为您需要的端口添加URL ACL条目:

netsh http add urlacl url=http://*:[port]/ user=everyone 
Run Code Online (Sandbox Code Playgroud)

2)在本例中,带有绑定的applicationhost文件直接位于Visual Studio项目文件夹中。具体来说,它位于.vs / config / applicationhost.config中。在文本编辑器中打开文件,然后找到包含应用程序绑定信息的行,例如

<bindings>
   <binding protocol="http" bindingInformation="*:1654:localhost" />                    
</bindings>
Run Code Online (Sandbox Code Playgroud)

使用您的虚拟机的IP添加另一个条目,如下所示:

<bindings>
   <binding protocol="http" bindingInformation="*:1654:localhost" /> 
   <binding protocol="http" bindingInformation="*:1654:10.211.55.3" />                   
</bindings>
Run Code Online (Sandbox Code Playgroud)

3)(**可选:可能不需要***)在applicationhost文件中,找到条目

<section name="anonymousAuthentication" overrideModeDefault="Deny" />
Run Code Online (Sandbox Code Playgroud)

并将其更改为

<section name="anonymousAuthentication" overrideModeDefault="Allow" />
Run Code Online (Sandbox Code Playgroud)

现在,我可以使用http://10.211.55.3:1654地址从Mac访问在IIS上运行的Web应用程序。

希望这可以帮助。