如何解决在模拟器中使用较大的 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 举报,一经查实,本站将立刻删除。