将本地主机上运行的服务公开给Android仿真器?

将本地主机上运行的服务公开给Android仿真器?,android,asp.net,windows,rest,visual-studio-2012,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”上寻找服务,因为这会指向它自己 我理解()Android emulator将10.0.2.2视为主机127.0.0.1的直通IP地址,因此,如果我a)通

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

我理解()Android emulator将10.0.2.2视为主机127.0.0.1的直通IP地址,因此,如果我a)通过127.0.0.1正确公开localhost,并且b)将应用程序中的目标地址从localhost:port更改为10.0.2.2:port,那么一切都将合情合理

我该怎么做A部分呢?我运行的是Windows 8.1 Pro和Visual Studio 2012,这个项目的目标是.NET 4.5


谢谢

改用IP地址10.0.2.2。见此: 您有两个选择:

  • 在IIS而不是VS Cassini下运行web服务。通过这种方式,您可以将web服务绑定到本地网络的IP地址,例如
    http://10.0.2.2:8081
  • 修改Android emulator上的主机文件,将localhost重定向到计算机的IP地址

  • 第二个不是一个很好的解决方案。这可能会与操作系统产生一些冲突,我甚至不确定卡西尼号是否还会满足这个请求。VisualStudio的内置web服务器(Cassini)只侦听本地请求,因此选项(1)实际上是最灵活的。另外,由于您有W8 Pro.

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


    从emulator连接到
    10.0.2.2
    ,然后将站点托管在
    127.0.0.1
    上,而不是
    localhost
    。那应该行。

    你能给我指一个能指导我完成这项工作的资源吗?我现在设想的是,每次我更新服务器时都需要手动重新部署,而不是卡西尼号的“命中F5并继续”方法,这会很糟糕。我可以做一些配置,让它成为一键式的东西吗?另外,如果问题1的寻址没有解决,那么#2真的可以工作吗?我可以在应用程序中更改为10.0.2.2:8081(ps:该端口来自何处?我的服务运行于:13980),然后更改我的计算机的hosts文件,将127.0.0.1重定向到localhost,或者它不是这样工作的?您可以设置visual studio,以便在按F5时,它编译并启动IIS。这里有一个很好的分步指南:-不能放在这里,太长了!