从 android 设备连接到本地主机并与之同步无法正常工作

Connecting to and syncing with localhost from android device not working

我正在使用 Azure 移动应用快速入门 ToDoList 示例来开始使用跨平台应用。我已经设置了后端并且它正在本地主机上工作——我可以使用 Swagger 来点击它并获取帖子等正在工作。

然后我设置客户端应用程序 (Xamarin.Forms)。我是 运行 我 Android 设备上的客户端应用程序,当后端在 Azure 中时,一切都很好,包括离线同步元素。问题是我现在必须在本地工作,但是在本地主机上 运行 时我无法与数据库同步。

起初调试器给我一个 "connection refused" 错误,所以我按照步骤 here 和其他各种来源,包括使用我的笔记本电脑 IP 和设置防火墙规则,添加绑定到端口IIS 管理器和 applicationhost.config,并更改 Constants.cs 中的 ApplicationURL。

现在,我没有收到连接被拒绝的错误,但数据没有进入数据库,尽管平板电脑上的 localdb 似乎在工作 - 当我尝试同步 to/from 数据库时它失败了。

不太熟悉网络,但可能需要注意的是,当我在浏览器中使用 localhost:portnum/tables/todoitem 时,我在 XML 中得到结果,但是当我使用 192.168.0.10:portnum/tables/todoitem 我得到 "Bad Request - Invalid Hostname".

默认情况下,您的 Mobile App .NET 服务器后端应用程序将 运行 在 IIS Express 中。当在网络上的另一台设备或 Hyper-V 中的虚拟机(例如 Windows Phone 模拟器)中使用客户端应用程序 运行ning 进行调试时,这是一个问题。 IIS Express 将在 localhost 下托管您的服务器应用程序,这使得其他设备或虚拟机无法访问该应用程序。您的客户端应用程序 运行ning on Windows Phone Emulator 对于 localhost 具有不同的含义。 Visual Studio 模拟器(在 Hyper-V 中 运行s)和 Google 模拟器也是如此。

将您的计算机配置为在 IIS 上托管您的 Mobile App .NET 服务器后端应用程序更简单,因为这允许您控制服务器应用程序与 IP 地址的绑定,而不是本地主机。

有关这方面的信息,请参阅:https://github.com/Azure/azure-mobile-apps-net-server/wiki/Local-development-and-debugging-the-Mobile-App-.NET-server-backend