android - 将在 localhost 上运行的服务暴露给 Android 模拟器?

标签 android asp.net windows rest visual-studio-2012

我正在通过 ASP.net/Visual Studio 运行一项服务,该服务正在与 Android 应用程序一起开发。当我通过 VS 运行服务时,可以在 http://localhost:13980/ 访问它,但不能在 http://127.0.0.1:13980/ 访问它(它给出了一个“错误的请求 - 无效的主机名”400 错误)。显然,我不能告诉 Android 应用程序在“localhost”上寻找服务,因为它会指向自己。

我了解 (according to this page) Android 模拟器将 10.0.2.2 视为主机 127.0.0.1 的直通 IP 地址,因此如果我 a) 获得 localhost通过 127.0.0.1 正确暴露,并且 b) 将应用程序中的目标地址从 localhost:port 更改为 10.0.2.2:port。

我将如何进行 A 部分?我正在运行 Windows 8.1 Pro、Visual Studio 2012,并且该项目的目标是 .NET 4.5。

谢谢!

最佳答案

你有两个选择:

  1. 在 IIS 下而不是 VS Cassini 下运行 Web 服务。通过这种方式,您可以将 Web 服务绑定(bind)到本地网络的 IP 地址,例如http://10.0.2.2:8081
  2. 修改 Android 模拟器上的 hosts 文件,将 localhost 重定向到您计算机的 IP 地址

第二个不是很好的解决方案。它可能会导致与操作系统发生一些冲突,我什至不确定 Cassini 是否仍会满足该请求。 Visual Studio 的内置 Web 服务器 (Cassini) 仅监听本地请求,因此选项 (1) 确实是最灵活的。另外,由于您拥有 W8 Pro IIS is already built-in .

关于android - 将在 localhost 上运行的服务暴露给 Android 模拟器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20066625/

相关文章:

java - 带有微调器的 ListView 内部 : 1st Item of the listview affects its last item

c++ - 在 Qt C++ 中访问 GStreamer 库时出错 - 程序在调试时被代码 0xc0000135 激发

javascript - InnoSetup - 有没有办法为 Internet Explorer 手动创建 cookie?

android - 是否可以将j2me应用程序更改为android应用程序?

android - 工具栏和 TabLayout 在 Android 4.4 设备上不可见

c# - ASP.NET 使用 ASHX 返回 JSON

javascript - jQuery在动画的开始和结束时执行某些操作

c++ - 如何在两个 C++ MFC 插件之间进行通信?

Android:卡片配对游戏需要帮助吗?

asp.net - 重定向模式 ="ResponseRewrite"的 customErrors 在共享主机上不起作用