Android: "Bad Request-Invalid Hostname" 从模拟器访问本地主机时

Android: "Bad Request-Invalid Hostname" When accessing localhost from emulators

我无法在 xamarin.android 应用程序中使用本地主机。 我已经在 Chrome 浏览器上执行了 Web 项目和服务项目(不是移动应用程序)。

显示的端口号我尝试在 Android Studio 模拟器和 Genymotion 模拟器中分别附加 10.0.2.2: 和 10.0.3.2: 浏览,我得到了结果 Bad Request-Invalid Hostname。即使我已经尝试过服务项目端口号,但都无法正常工作。

Web 项目:ASP.NET 项目使用 Visual Studio 2017 并且在同一解决方案中有服务项目。

打开您的解决方案文件夹。您可能在 1 个文件夹中有多个项目,您不需要项目的文件夹,而是根文件夹。里面有 .vs/config/applicationhost.config 个文件,打开它。

在里面找到 <sites>,如果您在一个解决方案中切换启动项目,您将拥有您所在的网站 运行,可能会有多个。当您右键单击它的图标时,该名称将与 IIS 在任务栏中显示的名称相对应。例如,标签可以是 <site name="ServerApp" id="2">。 现在你需要添加一行来绑定外部连接到你的机器ip,例如

      <site name="ServerApp" id="2">
...
        <bindings>
...
          <binding protocol="http" bindingInformation="*:60424:127.0.0.1" />
        </bindings>
      </site>

设置适当的端口号和协议,这里重要的是将它们映射到 127.0.0.1,而不是“本地主机”,然后它们将通过 10.0.2.2:60424 用于 android 模拟器(端口号 60424 只是来自上面的示例,使用你的)

我已经通过第三方软件解决了这个问题ngrock

勾选这个

您可以使用我们的免费扩展传送带https://marketplace.visualstudio.com/items?itemName=vs-publisher-1448185.ConveyorbyKeyoti

如果 Conveyor 给你的 IP 不工作,只需用 10.0.2.2 替换它。使用 Conveyor 解决了需要使 IIS Express 绑定到其他主机名的问题。它还具有一些其他功能。

感谢 让我走上正轨。在我的配置中,我当然需要在解决方案配置文件中将绑定更改为 127.0.0.1 而不是 localhost

由于我使用的是 Rider,配置文件位于不同的位置。看看:

在run/debug配置下,点击Generate applicationhost.config旁边的linkopen in editor(默认勾选)。这将打开用于编辑的配置文件。

除了上述,我还必须更新同一个项目的 launchsettings.json 文件中的 applicationUrl 属性 以使用环回 IP 而不是 localhost:

重新启动服务(以及之后的客户端)应该是不言而喻的,但任何时候都不能太小心。