Xamarin Forms HttpClient GetAsync仅在iOS中失败

Xamarin Forms HttpClient GetAsync仅在iOS中失败,xamarin,xamarin.forms,Xamarin,Xamarin.forms,我有一个非常简单的REST查询到我们的WebAPI后端(被许多应用程序使用),它在Android和Windows下运行良好,但在iOS中它失败,出现“对象引用未设置为对象实例”错误。在下面的代码中,moHttpClient和loUri都被实例化。我已经尝试在Device.BeginInvokeOnMainThread中包装对GetEmployeeRecord的调用,但这也没有帮助。我已经在VisualStudio和Mac上升级到了Xamarin的最新稳定版本。为什么它在其他OSs中工作,而在iO

我有一个非常简单的REST查询到我们的WebAPI后端(被许多应用程序使用),它在Android和Windows下运行良好,但在iOS中它失败,出现“对象引用未设置为对象实例”错误。在下面的代码中,moHttpClient和loUri都被实例化。我已经尝试在Device.BeginInvokeOnMainThread中包装对GetEmployeeRecord的调用,但这也没有帮助。我已经在VisualStudio和Mac上升级到了Xamarin的最新稳定版本。为什么它在其他OSs中工作,而在iOS中不工作

    private async void btnTest_Clicked(object sender, EventArgs e)
    {
        await GetEmployeeRecord();
    }

    private async Task GetEmployeeRecord()
    {
        try
        {
            var loUri = new Uri("https://my.website.com/mobile.webapp/api/employees?key=6c6f2c06-a444-4e54-bd77-b5f594c29910");
            var loResponse = await moHttpClient.GetAsync(loUri);
            if (loResponse.IsSuccessStatusCode)
            {
                var lcJson = await loResponse.Content.ReadAsStringAsync();
                await DisplayAlert("Employee", lcJson, "OK");
            }
        }
        catch (Exception ex)
        {
            Device.BeginInvokeOnMainThread(() =>
            {
                DisplayAlert("Get Employee Record", ex.Message, "OK");
            });
        }
    }
使用GetAsync行上的断点,moHttpClient和loUri都被实例化。但是,在GetAsync上滑动鼠标会显示一条消息,说明GetAsync是未知成员。这怎么可能?


我刚检查过,这个未知成员似乎也出现在Android上。但在安卓系统中,它实际上是执行的。

为了让http查询在iOS上运行,我必须在PCL项目中安装NuGet软件包Microsoft.Net.http,这也是代码运行的地方。

为了让http查询在iOS上运行,我必须在PCL项目中安装NuGet软件包Microsoft.Net.http,这就是代码运行的地方。

我从您提供的URI中得到404。什么是moHttpClient?你的网站上也有celf证书,这也可能是问题所在。如果你想让我们测试,请提供正确的地址,这不是我的网站,我只是把它放在屏蔽的安全原因的实际地址。URI没有什么问题,它适用于Android和Windows。我怀疑我需要在iOS项目中设置一些东西来允许网络/互联网访问。代码在PCL中。然后将断点放在异常上,并检查哪个对象为空。如果我不能运行它,看什么是空的,我就无能为力了。对不起,我想我之前提到过。失败的是GetAsync。moHttpClient和loUri都被实例化。在休息期间,将鼠标移到GetAsync上表示该方法不存在。巧合的是,在我回到这里并看到您的评论之前,我尝试安装了Microsoft.Net.Http。我只在PCL中安装了它,因为代码就在那里。它工作!!!现在它可以正常工作了,所以Xamarin表单的标准配置(或PCL基本配置)不适用于iOS。什么是moHttpClient?你的网站上也有celf证书,这也可能是问题所在。如果你想让我们测试,请提供正确的地址,这不是我的网站,我只是把它放在屏蔽的安全原因的实际地址。URI没有什么问题,它适用于Android和Windows。我怀疑我需要在iOS项目中设置一些东西来允许网络/互联网访问。代码在PCL中。然后将断点放在异常上,并检查哪个对象为空。如果我不能运行它,看什么是空的,我就无能为力了。对不起,我想我之前提到过。失败的是GetAsync。moHttpClient和loUri都被实例化。在休息期间,将鼠标移到GetAsync上表示该方法不存在。巧合的是,在我回到这里并看到您的评论之前,我尝试安装了Microsoft.Net.Http。我只在PCL中安装了它,因为代码就在那里。它工作!!!现在它可以正常工作了,所以Xamarin表单的标准配置(或PCL基本配置)不适用于iOS。