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

问题描述 投票:0回答:4

我无法将 localhost 与 xamarin.android 应用程序一起使用。 我已经在 Chrome 浏览器上执行了 Web 项目和服务项目(不是移动应用程序)。

显示的端口号我尝试通过分别附加 10.0.2.2: 和 10.0.3.2: 在 Android Studio 模拟器和 Genymotion 模拟器中浏览,我得到结果 Bad Request-Invalid Hostname。即使我已经尝试过Service project port number,两者都不起作用。

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

android android-emulator localhost
4个回答
51
投票

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

.vs/config/applicationhost.config
文件,打开它。

find

<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仅来自上面的示例,使用你的)


2
投票

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

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


1
投票

最佳答案的大喊,因为它让我走上了正确的轨道。在我的配置中,我当然需要在解决方案配置文件中将绑定更改为

127.0.0.1
而不是
localhost

由于我使用的是 Rider,配置文件位于不同的位置。检查一下:

在运行/调试配置下,单击(默认选中)

open in editor
旁边的链接
Generate applicationhost.config
。这将打开配置文件进行编辑。

除了上述之外,我还必须更新同一项目的

applicationUrl
文件中的
launchsettings.json
属性以使用环回IP而不是
localhost

重启服务(以及之后的客户端)应该是不言而喻的,但永远不能太小心。


0
投票

我已经使用第三方软件在另一个 stackoverflow 问题上回答了这个

ngrock

检查这个Android模拟器没有连接到本地主机api

© www.soinside.com 2019 - 2024. All rights reserved.