试图从Android模拟器访问本地托管的ASP.net服务 – 不在127.0.0.1上公开?

试图从Android模拟器访问本地托管的ASP.net服务 – 不在127.0.0.1上公开?,第1张

概述我正在运行通过VisualStudio运行的ASP.net服务.它可以通过浏览器访问(示例API调用)http://localhost:9000/api/Maps/1.当我通过浏览器访问http://127.0.0.1:9000/api/Maps/1时,出现400错误(错误请求–无效主机名).Android模拟器可以成功拨打外部网站(例如http://httpbin.o

我正在运行通过Visual Studio运行的ASP.net服务.它可以通过浏览器访问(示例API调用)http:// localhost:9000 / API / Maps / 1.当我通过浏览器访问http://127.0.0.1:9000/API/Maps/1时,出现400错误(错误请求 – 无效主机名).

Android模拟器可以成功拨打外部网站(例如http://httpbin.org/ip).当我指示应用程序从http://10.0.2.2:9000/API/Maps/1中提取JsON时(10.0.2.2是网络告诉我将模拟器指向主机的本地主机,结果是HTML for(我假设的是)上面127.0.0.1中的400错误.

似乎当我从Visual Studio运行Web服务时(2013年,如果这有所不同),它在localhost上正确公开,但不是127.0.0.1,因此无法进行测试.任何人都可以帮我解决这个问题吗?谢谢!

解决方法:

该问题是由主机名的IIS Express绑定引起的,主机名由Visual Studio设置为“localhost”.因此,“127.0.0.1”给出“错误400.错误请求(无效主机名)”.

解决这个问题需要几个步骤.

>修改applicationhost.config

这是IIS Express的配置文件,应位于ASP.NET项目的根目录中.如果无法轻易找到此文件,请右键单击任务栏中的IIS express,单击“显示所有应用程序”,并将注册的站点放在列表中.单击您尝试访问的站点.应在底部列出两个文件路径“Path”和“Config”. config是applicationhost.config文件的位置.

绑定信息将具有以下格式:

 <binding protocol="http" bindinginformation="*:17687:localhost" />

bindinginformation中的冒号分隔值表示要侦听的IP地址,端口和主机名.您可以删除主机名以避免IIS Express在请求标头字段中期望“localhost”:

 <binding protocol="http" bindinginformation="*:17687:" />

>退出IIS Express

需要重新启动IIS Express才能进行此配置更改.可以通过右键单击任务栏中的IIS来关闭它,然后选择“退出”或选择特定站点(大多数情况下只会有1个,除非有多个Web类型项目 – ASP.NET,WCT等.)然后单击“停止”,然后单击“开始”.但是退出它会更好,因为可能需要进行额外的配置,而PC可能还需要重新启动.

>防火墙

测试站点使用的端口应包含在防火墙中.在上面的例子中,端口地址将是17687.打开防火墙设置并添加入站规则以允许此TCP端口.此时,可能需要重新启动.至少应停止并重新启动项目以重新启动IIS Express.

总结

以上是内存溢出为你收集整理的试图从Android模拟器访问本地托管的ASP.net服务 – 不在127.0.0.1上公开?全部内容,希望文章能够帮你解决试图从Android模拟器访问本地托管的ASP.net服务 – 不在127.0.0.1上公开?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1110545.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存