微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

调试器在 xamarin 中的 httpclient.getasync 中跳过没有错误

如何解决调试器在 xamarin 中的 httpclient.getasync 中跳过没有错误

我想用这些代码连接到我的 Web api 但是当调试器到达时

var response = await client.GetAsync(url);

跳过没有任何错误

更新

意思是:

enter image description here

我设置了断点,当调试器到达该行之后,不捕捉下一行并退出该块并跳转调用方法

 public class Constants
{
    public const string BaseUrl = "https://localhost:44301/";
}

2:

    public static class GeneralUrl
{
    public static string ComapnyNameUrl()
    {
        return string.Format(Constants.BaseUrl);
    }
}

3:更改为 3.1

 public async static Task<List<CompanyName>> GetCompanyNamesAsync()
    {
        List<CompanyName> companyNameList = new List<CompanyName>();
        string url = GeneralUrl.ComapnyNameUrl() + "api/CompanyName";
        using (HttpClient client = new HttpClient())
        {
            var response = await client.GetAsync(url);
            if (response.IsSuccessstatusCode)
            {
                string content =await response.Content.ReadAsstringAsync();
                companyNameList = JsonConvert.DeserializeObject<List<CompanyName>>(content);
            }


        }
        return companyNameList;
    }

更新 2

3.1:

我把上面的代码改成这个,但问题存在 更新

public class CompanyNameService
{
    private static HttpClient client = new HttpClient();
    public async static Task<List<CompanyName>> GetCompanyNamesAsync()
    {
        List<CompanyName> companyNameList = new List<CompanyName>();
        string url = GeneralUrl.ComapnyNameUrl() + "api/Companyname";

            var response = await client.GetAsync(url);
            if (response.IsSuccessstatusCode)
            {
                string content =await response.Content.ReadAsstringAsync();
                companyNameList = JsonConvert.DeserializeObject<List<CompanyName>>(content);
            }
        return companyNameList;
    }
 
}

我的 web api 中的 startup.cs 也是

   services.AddControllers().AddJsonoptions(o =>
        {
            o.JsonSerializerOptions.ReferenceHandler = ReferenceHandler.Preserve;
            o.JsonSerializerOptions.MaxDepth = 0;
         });
          services.AddControllers().AddNewtonsoftJson(options =>
  options.SerializerSettings.ReferenceLoopHandling = 
   Newtonsoft.Json.ReferenceLoopHandling.Ignore);

更新 2 结束

最后调用它们是=>

4:

  protected override async void OnAppearing()
    {
        base.OnAppearing();
        var companyName = await CompanyNameService.GetCompanyNamesAsync();
    }

我认为这是异步方法,我的错误是什么??

更新

输出窗口的调试模式下,我收到此消息

02-10 13:04:21.568 I/Choreographer(790):跳过了 428 帧!应用程序可能在其主线程上做了太多工作。 02-10 13:04:21.642 I/Openglrenderer(790):戴维!持续时间=7213ms;标志= 0,IntendedVsync = 51372290598463,垂直同步= 51379423931511,OldestInputEvent = 9223372036854775807,NewestInputEvent = 0,HandleInputStart = 51379430268200,AnimationStart = 51379430347200,PerformTraversalsstart = 51379430673700,DrawStart = 51379441519600,SyncQueued = 51379446948700,SyncStart = 5137944712​​2900,IssueDrawCommandsstart = 51379447270300,SwapBuffers = 51379483411800,FrameCompleted=51379504170100,DequeueBufferDuration=409000,QueueBufferDuration=612000,

更新 3:

当我尝试使用本地地址时,在超过 5 分钟后在输出窗口中收到一条消息“操作已取消”并使用相同的消息捕获异常>.

解决方法

试试这个:

 protected async override void OnAppearing()
    {
        base.OnAppearing();
        var companyName = await GetCompanyNamesAsync();
    }

    public async static Task<List<CompanyName>> GetCompanyNamesAsync()
    {
        List<CompanyName> companyNameList = new List<CompanyName>();
        string url = GeneralUrl.ComapnyNameUrl() + "api/Companyname";
        using (HttpClient client = new HttpClient())
        {

            var response = await client.GetStringAsync(url);
         
            
            companyNameList = JsonConvert.DeserializeObject<List<CompanyName>>(response);


        }

        return companyNameList;
    }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。