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就启动不了,需要重新安装吗?