Недействительный токен продолжения CosmosDB

Я использую функцию Azure, которая запрашивает экземпляр CosmosDB.

Я пытаюсь реализовать разбиение на страницы с помощью токена продолжения, но продолжаю получать следующий ответ при вызове моей функции с токеном продолжения:

Сообщение »:« Произошла ошибка. »,« ExceptionMessage »:« Неверный токен продолжения \ r \ nActivityId: 0f79a65f-a9d2-49a8-8a9c-d33a8526bec8, Microsoft.Azure.Documents.Common / 2.0.0.0, documentdb-dotnet- sdk / 1.22.0 Host / 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);
    }
}

При первом вызове моей функции Azure с использованием URL-адреса http://localhost:7071/api/Event/GetAllPaged/3, получаю следующий ответ:

    {
"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/CDhbANnikwAGAAAAAAAAAAA==, я получаю указанную выше ошибку.

Что я делаю неправильно?


person monstertjie_za    schedule 31.08.2018    source источник
comment
Не могли бы вы поделиться основным кодом метода GetAll_Paged?   -  person Jay Gong    schedule 10.09.2018


Ответы (1)


Я нашел свою ошибку.

Мне нужно было передать весь полученный json-объект продолжения обратно в лазурь, а не только извлекать токен.

Вместо того, чтобы проходить:

CDhbANnikwAGAAAAAAAAAA ==

Я должен был пройти через весь возвращенный объект / строку JSON, как показано ниже:

"{\" токен \ ": \" CDhbANnikwAIAAAAAAAAAA == \ ", \" диапазон \ ": {\" min \ ": \" \ ", \" max \ ": \" FF \ "}}»

person monstertjie_za    schedule 10.09.2018
comment
Я нашел это решение, но у меня не было времени редактировать ответ. В любом случае, спасибо, что поделились, ваш ответ абсолютно правильный! - person Jay Gong; 10.09.2018