android - 尝试从 Android 模拟器访问本地托管的 ASP.net 服务 - 未在 127.0.0.1 上公开?

标签 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 模拟器可以成功调用外部站点(例如 http://httpbin.org/ip)。当我指示应用程序从 http://10.0.2.2:9000/api/Maps/1 中提取 JSON 时(10.0.2.2 是网络告诉我的将模拟器定向到主机的本地主机,结果是(我假设是)来自上面 127.0.0.1 的相同 400 错误的 HTML。

似乎当我从 Visual Studio(2013 年,如果这有所不同)运行 Web 服务时,它在本地主机上正确公开,但不是 127.0.0.1,因此无法访问以进行测试。谁能帮我解决这个问题?谢谢!

最佳答案

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

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

  1. 修改applicationhost.config

这是 IIS Express 的配置文件,应该位于 ASP.NET 项目的根目录中。如果这个文件不容易找到,右键单击任务栏中的IIS express,单击“显示所有应用程序”,注册的站点应该在列表中。单击您要访问的站点。底部应列出两个文件路径,“路径”和“配置”。配置是您的 applicationhost.config 文件的位置。

绑定(bind)信息的格式如下:

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

bindingInformation 中冒号分隔的值表示要监听的 IP 地址、端口和主机名。您可以删除主机名以避免 IIS Express 在请求 header 字段中期望“localhost”:

 <binding protocol="http" bindingInformation="*:17687:" />
  1. 退出 IIS Express

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

  1. 防火墙

测试站点使用的端口应包含在防火墙中。在上述情况下,端口地址为 17687。打开防火墙设置并添加入站规则以允许此 TCP 端口。那时,可能需要重新启动。至少,项目应该停止并重新启动以导致 IIS Express 重新启动。

关于android - 尝试从 Android 模拟器访问本地托管的 ASP.net 服务 - 未在 127.0.0.1 上公开?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21703617/

相关文章:

安卓 ImageView-16 :9

java - 如何使用带有 json 的 Map 从数据库设置 map latlng 值?

c# - 如何配置 Fluent NHibernate 以将查询输出到 Trace 或 Debug 而不是控制台?

c# - Visual Studio : how to add nuget packages as references when doing "Restore NuGet packages"

c++ - C2143 类型的错误 - 在 ',' 之前缺少 '<'

android - 如何正确安装 APK 文件,以便启动器在主屏幕上创建一个新的应用程序图标?

android - 当我的 googlemaps View Activity 重新获得焦点时出现问题(窗口下方带有黑色区域的 map )

javascript - Ajax图片上传问题

从 ASP .NET Hyperlink NavigateURL 属性调用 Javascript 函数

c# - 在 Visual Studio 中创建属性的快捷方式?