请求中指定的延续令牌格式错误/延续令牌 Azure Cosmos DB 分页格式无效

Continuation token specified in the request is malformed / Invalid format for continuation token Azure Cosmos DB pagination

我遇到了使用延续令牌在 cosmos 数据库中实施分页的问题。我第一次使用 JSON 格式的延续令牌获得第一批结果,但是当我将相同的令牌 JSON 字符串传回 cosmos DB 以获得下一组结果时,有时它会抛出“Continuation token请求中指定的格式不正确”或有时是“延续令牌的格式无效”。

这是代码-

        QueryRequestOptions queryRequestOptions = new QueryRequestOptions
        {
            MaxItemCount = pageSize
        };

        try
        {
            using (FeedIterator<TOutputDocument> resultSetIterator = _cosmosContainer.GetItemQueryIterator<TOutputDocument>(queryDefinition, continuationToken, queryRequestOptions))
            {
                if (resultSetIterator.HasMoreResults)
                {
                    FeedResponse<TOutputDocument> response = await resultSetIterator.ReadNextAsync();

                    if (response == null)


                    {
                        throw new NullReferenceException($"Unable to get response from cosmos db against query - {query}, container - {nameof(_cosmosContainer)}");
                    }
                    continuationToken = response.ContinuationToken;
                    documents.AddRange(response);
                }
            }
        }
        catch (CosmosException ex)
        { }

谢谢

由于错误指示 ,延续标记似乎为空或格式无效。

如果令牌为空,

[{\"token\":null,\"range\":{\"min\":\"05C1DFFFFFFFFC\",\"max\":\"FF\"}}]

按照issue中提到的步骤进行操作。

如果是Invalid token,尝试用Base64编码如下

string continuationToken = WebEncoders.Base64UrlEncode(Encoding.UTF8.GetBytes(cosmosToken));