我有以下代码从Dynamics CRM中检索事务(使用OData查询):
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 :(得分:1)
在我的案例中,@ odata.nextLink中的网址出错。
它是怎么回事:
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
没有&#34; /&#34;在[entity]和( id )之间
答案 1 :(得分:0)
odada nextlink返回下一个请求的完整URL,因此您需要解析它才能获得/ api / **部分。