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

在模拟器中使用较大的 json 错误调用 http

如何解决在模拟器中使用较大的 json 错误调用 http

当我通过模拟器进行同样的调用时,作为参数传递更高的限制,因此 json 会更高,显示错误,但如果限制更低且 json 更小,则不会显示错误.

通过我的实体手机,任何时候都不会出现错误

错误:未满足,函数:get_this_async_id,无法执行该方法,因为包含类型“System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[TResult_REF]”未完全实例化。程序集:类型:成员:(空)

我正在使用 polly 库进行 http 调用

我的代码

public async Task<Hero> GetHeroesWichFactory(string limite)
{
    var func = new Func<Task<Hero>>(() => HeroGetRequest(limite));

     //main function
    return await _networkService.WaitAndRetry<Hero>(func,new Func<int,TimeSpan>(time => TimeSpan.FromSeconds(Math.Pow(2,time))),3);
}

async Task<Hero> HeroGetRequest(string limite)
{
    var httpClient = new HttpClient();
    var response = await httpClient.GetAsync(GetUrl(limite));

    var rawResponse = await response.Content.ReadAsstringAsync();
    return JsonConvert.DeserializeObject<Hero>(rawResponse);
}

public async Task<T> WaitAndRetry<T>(Func<Task<T>> func,Func<int,TimeSpan> sleepDurationProvider,int retryCount)
{
    return await WaitAndRetryInner<T>(func,sleepDurationProvider,retryCount);
}

internal async Task<T> WaitAndRetryInner<T>(Func<Task<T>> func,int retryCount = 1,Func<Exception,TimeSpan,Task> onRetryAsync = null)
{
    var onRetryInner = new Func<Exception,Task>((e,t) =>
    {
        return Task.Factory.StartNew(() => {
            System.Diagnostics.Debug.WriteLine($"retrying in {t.ToString("g")} due to exception '{(e.InnerException ?? e).Message}'");
        });
    });

    return await Policy.Handle<Exception>().WaitAndRetryAsync(retryCount,onRetryAsync ?? onRetryInner).ExecuteAsync<T>(func);
}

注意:有时错误在模拟器中停止发生,然后突然回来,代码没有任何变化

请接受代码建议,这是存储库https://github.com/gabriel-projetos/AppMarvel

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