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

Parallels desktop: access local IIS web application from OS X (host)

我 运行ning Windows 10 在 OS X 上使用 Parallels Desktop(网络处于共享模式)。我需要从主机访问在 IIS 10 上 Visual Studio 和 运行ning 上创建的 Web 应用程序。例如,对于通用应用程序 运行ning on Windows at http://localhost:1654 I would like to access it from Mac browser with something like http://[ip_virtual_machine]:1654.

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

我尝试同时使用 http://10.211.55.2:1654/ and http://10.211.55.3:1654/ 访问 Web 应用程序,但没有成功。 对于前者,我得到一个 Bad Request - Invalid Hostname 响应,而对于后者,我得到 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。我该怎么做?

好的,我成功了。 额外的步骤是:

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

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" />

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

希望对您有所帮助。

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

上运行 Visual Studio 2017 运行ning

总结:

  1. 在 Parallels 中,确保您的网络类型设置为 "Shared Network" 并且 "Share Mac applications with Windows" 已启用
  2. 在您的 Windows VM 中,打开 PowerShell,输入 ipconfig,然后复制您的 VM 的 IPv4 地址。然后打开设置,转到系统 > 关于,然后复制您的 VM 的设备名称
  3. 在 macOS 中,在 /etc/hosts 文件中添加一个条目,将您的 VM 的 IP 地址映射到其设备名称,例如10.211.55.3 your-device-name
  4. 返回 Windows 虚拟机,在 Visual Studio 项目的文件夹中,编辑 .vs/config/applicationhost.config 中的 <binding> 键(注意 .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 防火墙并为您的项目添加新的入站和出站规则。对于这两个规则,select "Port" 作为规则类型,"TCP" 作为协议,从步骤 #4 输入端口,然后 select "Allow the connection"
  7. 在 Visual Studio 中,转到项目的属性,单击 "Web" 选项卡,然后将项目 URL 更改为使用 Windows 设备名称而不是 localhost,例如http://your-device-name:1234/。选中 "Override application root URL" 框并再次输入相同的 URL
  8. 使用 "Open in Mac" 浏览器调试您的项目。如果您没有看到此选项,请单击 "Browse With...",然后单击 "Add...",然后添加一个指向 C:\Program Files (x86)\Parallels\Parallels Tools\SIA\SharedIntApp.exe
  9. 的条目

调试后,您的应用程序将在 http://your-device-name:1234!

的 Safari(或任何您默认的 Mac 浏览器)中启动
  1. 从 windows 功能中打开 IIS(Internet 信息服务)。
  2. 转到 cmd 并获取 windows 虚拟机的 ip。
  3. 在你的 Mac 上使用 windows 机器的 ip 作为你的本地。

补充一下:当使用 asp.net core 和 kestrel(在 Parallels 中),并且想要从您的主机 mac 连接到 运行ning 服务器时,您可以 运行 服务器使用来宾 windows machine 的本地 IP 地址。所以做一个IPCONFIG然后获取本地IP地址:

WebHost
  .CreateDefaultBuilder()
  .UseStartup(startupType)
  .UseUrls("https://10.211.55.3:5001")
  .ConfigureSettings(servicesToAdd)
  .Build()
  .Run();

这将允许您从主机 mac

连接到例如 https://10.211.55.3:5001/api/values