HttpClient不时得到响应

时间:2017-09-05 08:39:35

标签: c# exception uwp httpclient httpresponse

我使用HttpClient从我的API接收数据。 API始终返回数据,但客户端(UWP)会不时从服务器获取答案。根据我的测试,我想,它取决于答案的大小(模型包含4个字段:1个guid和4个字符串字段),错误我在返回列表中捕获了73个记录。

这是我的API方法:

public async Task<HttpResponseMessage> GetClassList()
    {
        ...
            IEnumerable<Class> classList = await _profileService.GetClasses();

            IEnumerable<ClassViewModel> vm = classList.Select(e => new ClassViewModel(e));

            var response =  Request.CreateResponse(HttpStatusCode.OK, vm );
            return response;

        ...
    }

调用API的UWP代码:

try
{
   using(HttpClient client = new HttpClient())
    {
        string str = "http://address/api/v2/GetClassList";
        HttpResponseMessage answer = await client.GetAsync(str);
        string response = await answer.Content.ReadAsStringAsync();
        result = JsonConvert.DeserializeObject<T>(response);
    }
 }
 catch(Exception ex)
 {
 } 

HttpClient的默认超时= 01:40,5分钟后捕获异常:

  

System.OperationCanceledException:操作已取消。   消息=“操作已取消。

堆栈跟踪:

   at System.Net.Http.HttpClient.<FinishSendAsync>d__58.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult()

它可能依赖于异步调用吗?怎么处理?我做错了什么? 我会很高兴听到任何想法。提前谢谢。

0 个答案:

没有答案