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
总结:
- 在 Parallels 中,确保您的网络类型设置为 "Shared Network" 并且 "Share Mac applications with Windows" 已启用
- 在您的 Windows VM 中,打开 PowerShell,输入
ipconfig
,然后复制您的 VM 的 IPv4 地址。然后打开设置,转到系统 > 关于,然后复制您的 VM 的设备名称
- 在 macOS 中,在
/etc/hosts
文件中添加一个条目,将您的 VM 的 IP 地址映射到其设备名称,例如10.211.55.3 your-device-name
- 返回 Windows 虚拟机,在 Visual Studio 项目的文件夹中,编辑
.vs/config/applicationhost.config
中的 <binding>
键(注意 .vs
是一个隐藏的文件夹)以使用您的 VM 的设备名称而不是 localhost
,例如<binding protocol="http" bindingInformation="*:1234:your-device-name" />
- 以管理员身份打开 PowerShell 并运行以下命令启用外部访问,使用您的 VM 的设备名称和第 4 步中的端口:
netsh http add urlacl url=http://your-device-name:1234/ user=everyone
- 打开Windows 防火墙并为您的项目添加新的入站和出站规则。对于这两个规则,select "Port" 作为规则类型,"TCP" 作为协议,从步骤 #4 输入端口,然后 select "Allow the connection"
- 在 Visual Studio 中,转到项目的属性,单击 "Web" 选项卡,然后将项目 URL 更改为使用 Windows 设备名称而不是
localhost
,例如http://your-device-name:1234/
。选中 "Override application root URL" 框并再次输入相同的 URL
- 使用 "Open in Mac" 浏览器调试您的项目。如果您没有看到此选项,请单击 "Browse With...",然后单击 "Add...",然后添加一个指向
C:\Program Files (x86)\Parallels\Parallels Tools\SIA\SharedIntApp.exe
的条目
调试后,您的应用程序将在 http://your-device-name:1234
!
的 Safari(或任何您默认的 Mac 浏览器)中启动
- 从 windows 功能中打开 IIS(Internet 信息服务)。
- 转到 cmd 并获取 windows 虚拟机的 ip。
- 在你的 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
我 运行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总结:
- 在 Parallels 中,确保您的网络类型设置为 "Shared Network" 并且 "Share Mac applications with Windows" 已启用
- 在您的 Windows VM 中,打开 PowerShell,输入
ipconfig
,然后复制您的 VM 的 IPv4 地址。然后打开设置,转到系统 > 关于,然后复制您的 VM 的设备名称 - 在 macOS 中,在
/etc/hosts
文件中添加一个条目,将您的 VM 的 IP 地址映射到其设备名称,例如10.211.55.3 your-device-name
- 返回 Windows 虚拟机,在 Visual Studio 项目的文件夹中,编辑
.vs/config/applicationhost.config
中的<binding>
键(注意.vs
是一个隐藏的文件夹)以使用您的 VM 的设备名称而不是localhost
,例如<binding protocol="http" bindingInformation="*:1234:your-device-name" />
- 以管理员身份打开 PowerShell 并运行以下命令启用外部访问,使用您的 VM 的设备名称和第 4 步中的端口:
netsh http add urlacl url=http://your-device-name:1234/ user=everyone
- 打开Windows 防火墙并为您的项目添加新的入站和出站规则。对于这两个规则,select "Port" 作为规则类型,"TCP" 作为协议,从步骤 #4 输入端口,然后 select "Allow the connection"
- 在 Visual Studio 中,转到项目的属性,单击 "Web" 选项卡,然后将项目 URL 更改为使用 Windows 设备名称而不是
localhost
,例如http://your-device-name:1234/
。选中 "Override application root URL" 框并再次输入相同的 URL - 使用 "Open in Mac" 浏览器调试您的项目。如果您没有看到此选项,请单击 "Browse With...",然后单击 "Add...",然后添加一个指向
C:\Program Files (x86)\Parallels\Parallels Tools\SIA\SharedIntApp.exe
的条目
调试后,您的应用程序将在 http://your-device-name:1234
!
- 从 windows 功能中打开 IIS(Internet 信息服务)。
- 转到 cmd 并获取 windows 虚拟机的 ip。
- 在你的 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