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
:
重新启动服务(以及之后的客户端)应该是不言而喻的,但任何时候都不能太小心。
我无法在 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
:
重新启动服务(以及之后的客户端)应该是不言而喻的,但任何时候都不能太小心。