无效的延续令牌CosmosDB

时间:2018-08-31 04:19:13

标签: c# pagination azure-functions azure-cosmosdb azure-cosmosdb-sqlapi

我正在运行一个Azure函数,该函数查询CosmosDB的实例。

我正在尝试使用Continuation Token进行分页,但是当我用Continuation Token调用函数时,我不断收到以下响应:

  

消息”:“发生错误。”,   “ ExceptionMessage”:“无效的延续令牌\ r \ nActivityId:0f79a65f-a9d2-49a8-8a9c-d33a8526bec8,Microsoft.Azure.Documents.Common / 2.0.0.0,documentdb-dotnet-sdk / 1.22.0主机/ 32位MicrosoftWindowsNT /6.2.9200.0

这是我的Azure函数:最初将不带令牌的情况下调用此函数,并且在请求第二页时,将传递令牌。

[FunctionName("GetAllPaged")]
public static async Task<HttpResponseMessage> ReadAll(
    [HttpTrigger(AuthorizationLevel.Function, "get", Route = "GetAllPaged/{pageSize?}/{token?}")]HttpRequestMessage req,
    int? pageSize, string token, ILogger log, [Inject]IComponent<EventModel> component)
{
    try
    {
        log.LogInformation("Get all events");

        var response = await component.GetAll_Paged(pageSize, token);

        return req.CreateResponse(HttpStatusCode.OK, response);
    }
    catch (Exception ex)
    {
        log.LogError(ex.Message, ex);
        return req.CreateErrorResponse(HttpStatusCode.BadRequest, ex);
    }
}

在使用URL http://localhost:7071/api/Event/GetAllPaged/3首次调用Azure函数时,收到以下响应:

    {
"Continuation": {
    "token": "CDhbANnikwAGAAAAAAAAAA==",
    "range": {
        "min": "",
        "max": "FF"
    }
},
"Results": [
    {
        "id": "c428e1c4-48d5-47ae-9f37-c29cc3fc8696",
        "Description": "Test description nr: 64791",
        "User": "Test User"
    },
    {
        "id": "bab08fe7-da5c-48c6-971d-a14ef3eb5f4c",
        "Description": "Test description nr: 63486",
        "User": "Test User"
    },
    {
        "id": "9688acc2-4acf-4acd-a252-5481b5b4d450",
        "Description": "Test description nr: 86498",
        "User": "Test User"
    }
]
}

当我使用对Azure函数的下一个请求中提供的令牌时,将URL与令牌http://localhost:7071/api/Event/GetAllPaged/3/CDhbANnikwAGAAAAAAAAAA==一起使用,会收到上面列出的错误。

我在做什么错了?

1 个答案:

答案 0 :(得分:1)

我发现了我的错误。

我需要将接收到的整个延续json对象传递回azure,而不仅仅是提取令牌。

而不是通过:

  

CDhbANnikwAGAAAAAAAAAA ==

我应该已经遍历了返回的整个JSON对象/字符串,如下所示:

  

“ {\”令牌\“:\” CDhbANnikwAIAAAAAAAAAA == \“,\”范围\“:{\”最小\“:\” \“,\”最大\“:\” FF \“}} “