【问题标题】:How to debug a Xamarin iOS app hitting a localhost asp.net core API如何调试 Xamarin iOS 应用程序访问 localhost asp.net 核心 API
【发布时间】:2019-03-06 07:51:15
【问题描述】:

我有一个 Xamarin Forms 应用程序(Android 和 iOS,而不是 UWP),它访问了我创建的 DotNetCore 2.1 API(在 http://localhost:5000 下运行)。所有这些都是使用 Visual Studio 2017 开发的。

我可以使用地址 http://10.0.2.2:5000 调试 Android 端,该地址在 Android 端转换为“localhost”。所以我可以从 Android 模拟器中很好地访问我的 API。

问题出在 iOS 端。

iOS 模拟器确实在 Mac 上运行,因此无法看到我的 Windows 机器运行 API。

如何配置我的 Windows/Mac 机器以便能够访问我的本地 API?

我可以从 Mac 上 ping 我的 Windows 机器,但目前仅此而已。

【问题讨论】:

  • 假设两台机器是同一个本地网络/子网,在你的代码中,使用你的 DotNetCore 服务器的本地网络地址(即你的 Windows Visual Studio 主机 IP 地址(ipconfig it,或者打开网络属性以查找与您的 macOS 设备位于同一子网的 NIC 的当前 IP 地址等...)然后使用该 IP 地址在启动期间绑定您的 DotNetCore 服务器,以便它监听该子集入站流量请求
  • 在 Windows PC 上的 Visual Studio 2017 中打开 Xamarin Form 项目并与 Mac 配对。看看能不能和mac配对成功。
  • 是的,我可以很好地与 Mac 配对(我可以在模拟器中构建和调试)。我通过使用我机器的本地 IP 来修复它,并为传入请求解除阻塞我正在使用的端口(在本例中为 5000)。

标签: xamarin xamarin.forms .net-core


【解决方案1】:

我已经解决了这个问题,并发布了我为帮助他人所做的事情。我现在可以从 Android 模拟器、iOS 模拟器和实际设备访问我的 .net core 2.1 web api。

1) 运行 ipconfig 以获取您的本地 IP 地址。

2) 我没有对 Program 课程做任何特别的事情。您可以看到这是默认的 File/New Project 模板代码。我看到了许多使用更明确的 Kestral 配置的建议。我确信在某些情况下它会有所帮助,但在我的情况下,这不是必需的。

3) 配置 Kestral 以侦听该 IP 和端口(与 localhost 相比)。

4) 打开防火墙以通过该端口传递流量。

netsh advfirewall firewall add rule name="Http Port 5000" dir=in action=allow protocol=TCP localport=5000

【讨论】:

  • 你可以标记你的答案,让更多人看到,
  • 直到明天!但是,是的,我会这样做。
猜你喜欢
  • 2020-01-24
  • 2010-09-25
  • 2016-08-31
  • 2020-12-26
  • 2023-03-03
  • 2011-06-09
  • 2018-12-13
  • 1970-01-01
  • 2023-01-22
相关资源
最近更新 更多