繁体   English   中英

Dynamics CRM - 如何在.Net中处理odata.nextlink响应

[英]Dynamics CRM - How to handle an odata.nextlink response in .Net

我有以下代码从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?

就我而言,@ 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

[entity]和( id )之间没有“/”

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM