GetStringAsync VS2017意外行为

时间:2018-09-04 19:17:55

标签: c# xamarin

我正在学习如何在Xamarin表单上使用Web服务。 我一直在遵循一个教程(如果可以共享,请务必提及),在该教程中一切正常,直到我发现自己使用 Get 方法。 本教程使用MVVM模式,它是检查员工名单的应用程序。我将在代码中留下类名。

员工服务:

public class EmployeesServices
{
    public async Task <List<Employee>> GetEmployeesAsync()
    {
        RestClient<Employee> restClient = new RestClient<Employee>();
        var employeesList = await restClient.GetAsync();
        return employeesList;
    }
}

调用上一个类的MainViewModel。

    public MainViewModel()
    {
        InitializeDataAsync();
    }
    private async Task InitializeDataAsync()
    {
        var employeesServices = new EmployeesServices();
        EmployeesList = await employeesServices.GetEmployeesAsync();
    }

问题所在的RestClient。

        private const string WebServiceUrl = "http://localhost:xxxx/api/Employees/";//the localhost, Just for security I've hidden the numbers

    public async Task<List<T>> GetAsync()
    {
         var httpClient = new HttpClient();

         var json = await httpClient.GetStringAsync(WebServiceUrl);

         var taskModels = JsonConvert.DeserializeObject<List<T>>(json);

         return taskModels;

    }

当我调试以下行

var json = await httpClient.GetStringAsync(WebServiceUrl);

不检索字符串“ WebServiceUrl”(这是我托管服务的本地链接)。因此,它不会检索数据。 这种行为很奇怪。

  1. 没有日志错误。
  2. Xamarin播放器保持白色,什么也不渲染。
  3. 该行被跳过,甚至不运行下一行。它只是备份到没有数据的MainViewModel。
  4. 有一条警告说,在MainViewModel的构造函数中,应该等待(因为我们正在处理异步操作),但这并不是主要问题。

在本教程中,它可以完美运行,但是本教程使用VS2015。我正在使用VS2017。
HttpClient是否已更改了一些重要内容?这是错误吗?有解决方法吗? 我已经对该问题进行了非常深入的研究,但没有找到解决方案。只是暗示HttpClient改变了一些行为。

0 个答案:

没有答案