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

Posted

技术标签:

【中文标题】Parallels desktop:从 OS X(主机)访问本地 IIS Web 应用程序【英文标题】:Parallels desktop: access local IIS web application from OS X (host) 【发布时间】:2017-06-17 23:17:12 【问题描述】:

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

我做的第一件事是完全关闭 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 应用程序的引用。当我在 IIS 上的 Visual Studio 中运行 Web 应用程序时,AFAIK 应该将绑定添加到 applicationhost 文件中,但是我的任何 Web 应用程序都没有条目。我可以在 IIS 上遇到一些问题吗?

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

但我需要从 Mac 访问 Windows IIS。我该怎么做?

【问题讨论】:

【参考方案1】:

补充一点:当使用 asp.net core 和 kestrel(在 Parallels 中),并且想从您的 Host mac 连接到正在运行的服务器时,您可以使用来宾 Windows 机器的本地 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

【讨论】:

【参考方案2】:
    从 Windows 功能开启 IIS(互联网信息服务)。 进入cmd获取windows虚拟机的ip。 在您的 Mac 上,使用 windows 机器的 ip 作为您的本地。

【讨论】:

【参考方案3】:

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

总结:

    在 Parallels 中,确保您的网络类型设置为“共享网络”并启用“与 Windows 共享 Mac 应用程序” 在您的 Windows VM 中,打开 PowerShell,输入 ipconfig,然后复制您的 VM 的 IPv4 地址。然后打开设置,转到系统 > 关于,然后复制您的 VM 的设备名称 在 macOS 中,向您的 /etc/hosts 文件添加一个条目,将您的 VM 的 IP 地址映射到其设备名称,例如10.211.55.3 your-device-name 返回 Windows VM,在 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 防火墙并为您的项目添加新的入站和出站规则。对于这两个规则,选择“端口”作为规则类型,选择“TCP”作为协议,输入第 4 步中的端口,然后选择“允许连接” 在 Visual Studio 中,转到项目的属性,单击“Web”选项卡,然后将项目 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

【讨论】:

我无法完全表达对您的感激之情,但您的解决方案是唯一有效的解决方案!谢谢!【参考方案4】:

好的,我得到了它的工作。 额外的步骤是:

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 应用程序。

希望这会有所帮助。

【讨论】:

第 3 步似乎没有必要。其他步骤可以在著名的博客文章中轻松找到,例如hanselman.com/blog/… 如果在执行第 1 步时出现错误,解决方法如下:***.com/questions/18855607/… 不适合我。我可以从 macOS 访问10.211.55.3(我的本地 VM)没问题,但这只是向我显示了默认的 IIS 起始页。如果我按照上述步骤然后尝试访问10.211.55.3:1234(或特定站点的任何端口),它就会超时。有什么想法吗?

以上是关于Parallels desktop:从 OS X(主机)访问本地 IIS Web 应用程序的主要内容,如果未能解决你的问题,请参考以下文章

Hadoop2.7.3 多台主机完全分布式搭建(Mac OS X 10.12.4系统 + Parallels Desktop 12 Pro Edition)

Mac OS更新后无法启动parallels desktop虚拟机

为啥mac升级之后,升级成mac OS Sierra 10.12.1,我的parallels Desktop就启动不了,需要重新安装吗?

parallels desktop 17 免激活密钥破解版,支持m1芯片

怎么卸载parallels desktop

如何从 Mac 卸载 Parallels Desktop 9