将在localhost上运行的服务公开给Android模拟器?

时间:2013-11-19 08:31:32

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

我正在通过与Android应用程序一起开发的ASP.net/Visual Studio运行服务。当我通过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。

谢谢!

3 个答案:

答案 0 :(得分:0)

您有两种选择:

  1. 在IIS下运行Web服务而不是VS Cassini。这样,您就可以将Web服务绑定到本地网络的IP地址,例如http://10.0.2.2:8081
  2. 修改Android模拟器上的hosts文件,将localhost重定向到计算机的IP地址
  3. 第二个不是一个很好的解决方案。它可能会导致与操作系统的一些冲突,我甚至不确定卡西尼是否仍会提供请求。 Visual Studio的内置Web服务器(Cassini)仅侦听本地请求,因此选项(1)确实是最灵活的。另外,因为你有W8 Pro IIS is already built-in

答案 1 :(得分:0)

IP地址10.0.2.2 IP映射到127.0.0.1 IP地址,而不是localhost

从模拟器中,连接到10.0.2.2,然后在127.0.0.1而不是localhost上托管您的网站。这应该有用。

答案 2 :(得分:-1)