【问题标题】:Connecting to and syncing with localhost from android device not working从 android 设备连接并与 localhost 同步不起作用
【发布时间】:2016-12-18 05:08:20
【问题描述】:

我正在使用 Azure 移动应用快速入门 ToDoList 示例来开始使用跨平台应用。我已经设置了后端,它正在本地主机上运行 - 我可以使用 Swagger 访问它并获取帖子等正在运行。

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

起初调试器给了我一个“连接被拒绝”的错误,所以我按照here 和其他各种来源的步骤操作,包括使用我的笔记本电脑 IP 和设置防火墙规则,在 IIS 管理器和应用程序主机中添加端口绑定。配置,并在 Constants.cs 中更改 ApplicationURL。

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

对网络不太熟悉,但可能需要注意的是,当我在浏览器中使用 localhost:portnum/tables/todoitem 时,我会得到 XML 格式的结果,但是当我使用 192.168.0.10:portnum/tables/todoitem 时,我会得到“Bad请求 - 无效的主机名”。

【问题讨论】:

  • 您使用的是什么后端?节点还是 ASP.NET?
  • 嗨,阿德里安,我正在使用 ASP.NET

标签: azure iis networking localhost azure-mobile-services


【解决方案1】:

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

【讨论】:

  • 谢谢阿德里安。一个很好的地方通过那里。我会试一试并恢复。
  • 现在才回到这个话题。我已经按照连接到 IIS 的步骤操作,现在可以通过我的设备上的 IP 获取应用程序主页。但是,当我尝试通过 swagger 执行任何获取、发布等操作时,我收到服务器错误 (500)。 “未找到或无法访问服务器。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。”努力了解哪里出了问题。
  • 您将需要调试 500,这通常是服务器代码问题。您的代码中可能抛出了一个您没有正确捕获的异常。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-10-30
  • 2020-10-27
  • 2020-02-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多