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

时间:2017-02-01 09:13:36

标签: iis localhost virtual-machine firewall parallels

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

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

我尝试使用http://10.211.55.2:1654/http://10.211.55.3:1654/访问网络应用程序,但没有运气。 对于前者,我得到一个错误的请求 - 无效的主机名响应,而后者我得到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。我怎么能这样做?

4 个答案:

答案 0 :(得分:5)

好的我工作了。 其他步骤是:

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上运行的网络应用。

希望这有帮助。

答案 1 :(得分:1)

接受的答案对我不起作用,但是在遵循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项目的文件夹中,编辑<binding>中的.vs/config/applicationhost.config键(请注意.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
  9. 的条目。

调试后,您的应用将在http://your-device-name:1234的Safari(或任何默认的Mac浏览器)中启动!

答案 2 :(得分:0)

  1. 从Windows功能中打开IIS(互联网信息服务)。
  2. 转到cmd并获取Windows虚拟机的IP。
  3. 在Mac上,将Windows计算机的ip用作本地计算机。

答案 3 :(得分:0)

只需添加:当使用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();

这将允许您从HOST mac连接到例如https://10.211.55.3:5001/api/values