试图从Android emulator访问本地托管的ASP.net服务-未在127.0.0.1上公开?
我正在通过Visual Studio运行ASP.net服务。可通过浏览器访问(示例API调用)试图从Android emulator访问本地托管的ASP.net服务-未在127.0.0.1上公开?,android,asp.net,visual-studio,rest,iis,Android,Asp.net,Visual Studio,Rest,Iis,我正在通过Visual Studio运行ASP.net服务。可通过浏览器访问(示例API调用)http://localhost:9000/api/Maps/1。当我访问http://127.0.0.1:9000/api/Maps/1通过浏览器,我收到一个400错误(请求错误-主机名无效) Android emulator可以成功调用外部站点(例如http://httpbin.org/ip)。当我指示应用程序从http://10.0.2.2:9000/api/Maps/1(10.0.2.2是web
http://localhost:9000/api/Maps/1
。当我访问http://127.0.0.1:9000/api/Maps/1
通过浏览器,我收到一个400错误(请求错误-主机名无效)
Android emulator可以成功调用外部站点(例如http://httpbin.org/ip
)。当我指示应用程序从http://10.0.2.2:9000/api/Maps/1
(10.0.2.2是web告诉我的将仿真器定向到主机的本地主机的内容,结果是(我假设是)上面127.0.0.1中相同的400错误的HTML
当我从Visual Studio运行web服务时(2013年,如果有区别的话),它似乎在localhost上正确公开,但不是127.0.0.1,因此无法进行测试。有人能帮我解决这个问题吗?谢谢!您可以在Android Emulator中更改主机文件(对于根设备也是如此)。下面是您如何做到这一点的
adb设备
adb pull/system/etc/hosts/home/“yourusername”/
Windows:adb pull/system/etc/hosts C:/hosts
hosts
文件并在下面添加行
yourdomainputthere benjin.local
adb重新装载
adb推送/home/yourusername/hosts/system/etc
现在您可以访问这个url,就像benjin一样。本地Android emulator使用10.0.2.2代替127.0.0.1。因为开发机器上的127.0.0.1对应于emulator自己的环回接口
该问题是由IIS Express按主机名绑定引起的,并且Visual Studio将主机名设置为“localhost”。因此,“127.0.0.1”给出了“错误400.错误请求(无效主机名)” 解决这个问题需要几个步骤
<binding protocol="http" bindingInformation="*:17687:localhost" />
bindingInformation中以冒号分隔的值表示要侦听的IP地址、端口和主机名。您可以删除主机名,以避免IIS Express在请求标头字段中使用“localhost”:
<binding protocol="http" bindingInformation="*:17687:" />
测试站点使用的端口应包含在防火墙中。在上述情况下,端口地址应为17687。打开防火墙设置并添加入站规则以允许此TCP端口。此时,可能需要重新启动。至少应停止并重新启动项目以重新启动IIS Express。我现在没有访问bog标准ASP.NET服务的权限,但在Web API上,您只需右键单击项目,选择属性并转到属性页的Web选项卡。在那里,我可以将项目Url字段更改为使用
127.0.0.1
而不是localhost
。完成此操作后,仿真器应连接很好,虽然您的浏览器现在可以连接到localhost
或127.0.0.1
,但hosts文件只读取127.0.0.1 localhost
。我该添加什么?据我所知,服务器只暴露于我桌面的本地主机,而不是模拟器。我怀疑解决方案在于ASP.net/IIS配置ion,而不是Android。添加需要使用某个名称访问的地址之后,我可能会有点发疯,但我不确定这会有什么帮助。hosts
文件通过将“localhost”定向到127.0.0.1来工作。我假设我不能使用“localhost”emulator中的关键字,因为它指的是emulator,而不是运行emulator的计算机,对吗?请使用其他单词进行描述。就像我在“benjin.local”之前写的那样。因此,您可以通过此访问您的URL。我认为您误解了。模拟器正在访问127.0.0.1:9000。问题是我的服务器暴露在本地主机上,而不是127.0.0.1。可能有其他安全设置会阻止计算机接受外部连接。我发现了一些病毒防护程序ams可能会阻止它认为危险的连接。你是一个救生员。请注意,如果你将VS与内置IIS一起使用,你必须以管理员权限运行它,这样它才能打开端口。在我的例子中,配置文件位于Solution\.VS\config目录。该.VS目录是隐藏的,因此请确保将这些设置为visibleOur free VS e名为“输送机”的xtension在不更改配置的情况下解决了此问题: