请求中指定的延续令牌格式错误/延续令牌 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));
我遇到了使用延续令牌在 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));