【问题标题】:Parallels desktop: access local IIS web application from OS X (host)Parallels desktop:从 OS X(主机)访问本地 IIS Web 应用程序
【发布时间】: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。我该怎么做?

【问题讨论】:

    标签: iis localhost virtual-machine firewall parallels


    【解决方案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】:
      1. 从 Windows 功能开启 IIS(互联网信息服务)。
      2. 进入cmd获取windows虚拟机的ip。
      3. 在您的 Mac 上,使用 windows 机器的 ip 作为您的本地。

      【讨论】:

        【解决方案3】:

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

        总结:

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

        【讨论】:

        • 我无法完全表达对您的感激之情,但您的解决方案是唯一有效的解决方案!谢谢!
        【解决方案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 步时出现错误,解决方法如下:stackoverflow.com/questions/18855607/…
        • 不适合我。我可以从 macOS 访问10.211.55.3(我的本地 VM)没问题,但这只是向我显示了默认的 IIS 起始页。如果我按照上述步骤然后尝试访问10.211.55.3:1234(或特定站点的任何端口),它就会超时。有什么想法吗?
        猜你喜欢
        • 2018-05-28
        • 2017-12-22
        • 2022-07-25
        • 2011-08-09
        • 2021-11-06
        • 1970-01-01
        • 2014-12-06
        • 1970-01-01
        • 2012-07-28
        相关资源
        最近更新 更多