C# Xamarin表单因异步Http调用而崩溃

C# Xamarin表单因异步Http调用而崩溃,c#,xamarin.forms,async-await,xamarin-forms-4,C#,Xamarin.forms,Async Await,Xamarin Forms 4,我正在开发一个Xamarin.Forms(4.1.0)应用程序,它可以调用REST 调用我的web服务时,应用程序崩溃,毫无例外 仅在输出上获得此消息: 07-08 19:09:04.792 F/ (22723): * Assertion at /Users/builder/jenkins/workspace/xamarin-android-d16-1/xamarin-android/external/mono/mono/mini/debugger-agent.c:4387, co

我正在开发一个Xamarin.Forms(4.1.0)应用程序,它可以调用REST

调用我的web服务时,应用程序崩溃,毫无例外

仅在输出上获得此消息:

07-08 19:09:04.792 F/        (22723): * Assertion at /Users/builder/jenkins/workspace/xamarin-android-d16-1/xamarin-android/external/mono/mono/mini/debugger-agent.c:4387, condition `is_ok (error)' not met, function:get_this_async_id, Could not execute the method because the containing type 'System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[RestQueryResultT_REF]', is not fully instantiated. assembly:<unknown assembly> type:<unknown type> member:(null)
07-08 19:09:04.793 F/libc    (22723): Fatal signal 6 (SIGABRT), code -6 (SI_TKILL) in tid 22723 (io.puffix), pid 22723 (io.puffix)
该调用由UI操作触发的事件处理程序方法进行。 GetAsync调用导致应用程序崩溃


有什么办法解决这个问题吗?

这似乎是个问题,已经在
Github
中存档了。您可以在以下线程中看到讨论:

  • 解决方法是使用
    GetAwaiter().GetResult()
    而不是
    await

    有效:

    response = _client.GetAsync(uri).GetAwaiter().GetResult();
    
    await _client.GetAsync(uri);
    
    不起作用:

    response = _client.GetAsync(uri).GetAwaiter().GetResult();
    
    await _client.GetAsync(uri);
    

    你能试着用小一点的回答吗?我也有同样的问题(在我的例子中,当我使用服务器上的2或3条记录进行测试时,它工作得很好,但是如果我使用10条记录,它就会崩溃)。我不得不更换模拟器。我现在正在使用连接到计算机的真实手机。

    哪条线路导致了崩溃?您是否尝试捕获异常?GetAsync行导致崩溃。是的,尝试添加catch,并被应用程序错误引用,但没有成功。它只是在Android上崩溃吗?您是否尝试过切换HTTP堆栈?您是否启用了Internet权限?你测试过你的url可以通过浏览器从设备/模拟器访问吗?我只在Android上开发。已启用internet权限。可以从我的设备浏览URL。如何切换HTTP堆栈?谢谢。。。这太可悲了!这个问题已经存在很长时间了,还没有解决!这也帮了我的忙——有一段时间我一直在挠头。这怎么还是个问题?!