【问题标题】:Dynamics CRM - How to handle an odata.nextlink response in .NetDynamics CRM - 如何在 .Net 中处理 odata.nextlink 响应
【发布时间】:2016-04-22 12:46:59
【问题描述】:

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

【问题讨论】:

    标签: c# rest odata dynamics-crm


    【解决方案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
    

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-05-26
        • 1970-01-01
        • 2019-09-17
        相关资源
        最近更新 更多