首页 > 解决方案 > 无法通过使用 Xamarin.IOS 的模拟器连接到本地计算机上的 Restfull API

问题描述

我正在构建我的第一个 Xamarin 应用程序并尝试使用它连接到同一台机器上的 Restful API。我们选择 Xamarin 的原因是我们可以构建一个应用程序以在多个设备上运行。

我们有一个在 IISExpress 上运行的外部 WebAPI 项目,我们将 URL 设置为http://127.0.0.1:5001

在我们的 Xamarin 项目中,我们可以通过 Visual Studio 中的相应模拟器使用 UWP 和 Android 应用程序成功连接到 API 项目。这是我用来区分正在运行的设备模拟器的示例。

    public static string BaseAddress = Device.RuntimePlatform == Device.Android ? "http://10.0.2.2:5001"
        : Device.RuntimePlatform == Device.iOS ? "http://localhost:5001"
        : "http://127.0.0.1:5001";
    public static string TodoItemsUrl = BaseAddress + "/api/Appointment/GetAppointments";

当我们运行 iOS 模拟器时尝试调用我们的 API 控制器。似乎没有提出任何要求。我尝试了很多很多不同的东西,但似乎无法找到解决方案。还发现那里的文档非常模糊。有谁知道为什么会发生这种情况?

我经常收到

       System.Net.WebExceptionStatus.ConnectFailure

标签: .netxamarinxamarin.ios

解决方案


这个问题的最佳解决方案 IMO 是在 Visual Studio IDE 中工作时完全放弃 IISExpress 并恢复使用 LocalIIS。这样我们就可以将 API 地址指定为 IP;就像在 192.168.. 的范围内一样。这确保我们仍然可以调试事物并成功避免安装模拟器时会出现的环回问题。


推荐阅读