【问题标题】:Genymotion view localhost siteGenymotion 查看本地主机站点
【发布时间】:2014-09-09 07:24:34
【问题描述】:

我正在建立一个网站,我想看看它是如何在 Android 智能手机上呈现的,所以我下载了 Genymotion。我在 Genymotion 的本地站点上看不到任何页面(“错误请求 - 无效主机名”)。

当我启动 Visual Studio 解决方案时,主页地址是

http://localhost:18207

按照我找到的建议,例如 here,我在 Genymotion 中输入了以下地址:

http://10.0.3.2:18207

http://192.168.56.1:18207

http://(my ip address):18207

但我总是遇到上述错误,或者有时会出现超时错误。

非常感谢您的任何建议!

【问题讨论】:

    标签: android-emulator visual-studio-2013 genymotion


    【解决方案1】:

    我遇到了同样的问题,并在这篇博文的帮助下解决了这个问题:

    http://blog.binarybits.net/applications/iis-express-http-error-400-the-request-hostname-is-invalid/

    我不想为该帖子的内容获得任何功劳,但以防万一它下线,我会列出流程。本质上,您需要更新 IIS Express 的配置,以便它接受来自 Genymotion 的传入请求。所以假设你的网站在 8080 端口上运行:

    第 1 步 - 在 C:\Users\\Documents\IISExpress\config\applicationhost.config 中修改您网站的特定配置,使其与 * 相关联,而不是与本地主机

    <site name="WebSite1" id="1" serverAutoStart="true">
     <application path="/">
      <virtualDirectory path="/" physicalPath="PATH TO YOUR SITE" />
     </application>
     <bindings>
      <binding protocol="http" bindingInformation=":8080:*" /> <!-- CHANGE THIS LINE -->
     </bindings>
    </site>
    

    第 2 步 - 添加 ACL 规则以允许传入连接在此访问您的笔记本电脑(通过管理员运行此命令)

    netsh http add urlacl url=http://*:8080/ user=everyone
    

    第 3 步 - 最后使用这个特殊地址在 Genymotion 中连接到您的网站

    http://10.0.3.2:8080/
    

    这对我有用,所以希望它也对你有用。

    【讨论】:

    • 经过数小时的挖掘终于奏效了。我正在调用 IIS Express WCF Web 服务而不是网站,这解决了我的问题。我只需要确保以后不会切换模拟器,因为 10.0.2.3 对于 Genymotion 的 localhost 地址是唯一的。
    • 到处都有 applicationhost.config 文件...要找到正确的文件,请右键单击 IIS 图标并选择“显示所有应用程序”。突出显示列表中的应用程序,它将显示正确配置文件的路径
    【解决方案2】:

    就我而言,Sam Story 提供的答案稍作修改就解决了这个问题。 我的本地服务使用 MVC Web Api 控制器托管(我使用的是 Visual Studio 2013)。

    在第 1 步中,我没有将 :8080:localhost 替换为 :8080:*,而是在现有绑定旁边添加了一个新绑定。新绑定中没有 localhost 或 *。它看起来像这样:

     <bindings>
      <binding protocol="http" bindingInformation=":8080:localhost" /> <!-- Existing binding -->
      <binding protocol="http" bindingInformation=":8080:" /> <!-- New binding. Note that there is no asterisk(*)--> 
     </bindings>
    

    如果不清楚,请确保将 8080 替换为 localhost 上托管服务的实际端口。就我而言,它是 53533。

    【讨论】:

      【解决方案3】:

      在 192.168.56.1 网络上运行您的网络服务器。这通常是服务器配置中的设置。它可能默认为您主机的真实适配器,而不是 VirtualBox 连接到的虚拟适配器。我不确定您使用的是什么主机操作系统,但虚拟适配器通常是用于 Linux 安装的 vbox0。这是 Genymotion 所在的虚拟网络。

      您的 Genymotion 虚拟机将有一个 DHCP 地址,例如 192.168.56.101。您可以使用 VM 内的 Genymotion 配置应用程序进行检查。如果是这种情况,并且您的 Web 服务器也在此子网上,您应该能够将 Genymotion 浏览器指向 192.168.56.1。

      【讨论】:

      • 我在 Windows 8 上。我已经尝试过您提到的地址,如我的问题中所述,但没有成功。在 ipconfig 我在“以太网适配器 VirtualBox Host-Only Network”下有那个地址。
      • 您能否从 Android VM(即adb shell ping 192.168.56.1)内部成功 ping Windows 主机(192.168.56.1)?另外,您是否检查过您的 Windows 防火墙是否导致了问题?我的设置可以满足您的要求,但在 Linux 上,否则我会更具体。
      • 另外,您是否确认 Web 服务器实际上正在侦听 192.168.56.1?如果是,该地址也应该可以在您的 Windows 浏览器中使用。除了locahost 之外的任何服务器地址都可以在 Windows 上使用吗?
      • 实际上,如果我在浏览器中输入地址192.168.56.1,它就不起作用。你能告诉我如何在Android中ping吗?我没有找到“adb shell”。谢谢。
      • 假设您已经安装了 SDK 和 adb,这很糟糕。要从 Genymotion 设备内部测试连接性,请启动它,下载一个像这样的终端模拟器:github.com/jackpal/Android-Terminal-Emulator/wiki,然后通过将 APK 拖放到正在运行的 Genymotion 设备顶部来安装 APK。它将运行并为您提供 Linux shell。输入ping 192.168.56.1,您应该会得到一个以毫秒为单位显示响应时间的列表。
      【解决方案4】:

      你只需要使用http://yourHostIpAdress/YourWebSite(不需要端口)

      至少这在通过 IIS 在本地发布网站时有效

      【讨论】:

        猜你喜欢
        • 2016-03-27
        • 1970-01-01
        • 1970-01-01
        • 2015-09-14
        • 2013-07-07
        • 1970-01-01
        • 2015-06-04
        • 1970-01-01
        • 2017-09-13
        相关资源
        最近更新 更多