2016-04-22 78 views
3
的odata.nextlink响应

我有一个从Dynamics CRM中检索事务,下面的代码块(与OData的查询):动态CRM - 如何处理在.net

public async Task<IEnumerable<Transaccion>> GetTransactions() 
    { 
     var tableName = Transaccion.CrmTableName; 

     var request = new RestRequest($"/api/data/v8.0/{tableName}"); 
     request.AddHeader("Prefer", "odata.maxpagesize=500"); 
     var responseData = await client.ExecuteGetTaskAsync<ODataResponse<List<Transaccion>>>(request); 
     var transactions = responseData.Data.Value; 

     while (responseData.Data.NextLink != null) 
     { 
      request = new RestRequest(responseData.Data.NextLink); 
      request.AddHeader("Prefer", "odata.maxpagesize=500"); 
      responseData = await client.ExecuteGetTaskAsync<ODataResponse<List<Transaccion>>>(request); 
      transactions.AddRange(responseData.Data.Value); 
     } 

     return transactions; 
    } 

一次我执行第一“ ExecuteGetTaskAsync“,我得到我的例子和预期的NextLink属性,指向我需要检索的下一组实体。然而,当我尝试执行下一个RestRequest时,我没有得到一个JSON作为响应,而是一个对应于重定向的Html页面,我可以在其中读取错误消息“”。

这很奇怪,因为第一次调用可以正确完成,因为Restclient已被正确验证。

发生了什么事?我如何在.Net中使用Dynamics CRM进行分页并使用NextLink?

回答

0

odada nextlink返回下一个请求的完整URL,因此您需要解析它以仅获取/ api/**部分。

1

在我的情况下@ odata.nextLink中的URL有一个错误。

究竟是怎么回事:

http://[Organization URI]/api/data/v8.2/[entity]/(68e95f08-d372-e711-966b-defe0719ce9e)/[relation entity]?$select=ne_name 

而且没有工作,但这并:

http://[Organization URI]/api/data/v8.2/[entity](68e95f08-d372-e711-966b-defe0719ce9e)/[relation entity]?$select=ne_name 

没有 “/”[实体]之间(ID