Кодирование / использование файла cookie Paging при использовании FetchXML с веб-приложением Dynamics 365 - PullRequest
0 голосов
/ 02 июля 2019

Я использую FetchXML с веб-API Dynamics 365. Это достаточно просто, пока я не попытаюсь ввести пейджинг.

В исходном запросе, который я передаю, есть эта выборка, которую я encodeURI включил:

<fetch nolock='true' page='1' count='5'  returntotalrecordcount='true'>
    <entity name='td_servicesummary'>
        //Query ommitted for brevity    
    </entity>
</fetch>

Это возвращает 5 результатов, которые я ожидаю. Всего их 7, которые также возвращаются мне через @Microsoft.Dynamics.CRM.totalrecordcount.

Я получаю пейджинговый cookie через @Microsoft.Dynamics.CRM.fetchxmlpagingcookie. Мне кажется уже закодировано:

<cookie pagenumber="2" pagingcookie="%253ccookie%2520page%253d%25221%2522%253e%253ctd_reportedon%2520last%253d%25222019-06-25T19%253a09%253a37-00%253a00%2522%2520first%253d%25222019-06-30T19%253a48%253a51-00%253a00%2522%2520%252f%253e%253ctd_servicesummaryid%2520last%253d%2522%257b62B328C1-7C97-E911-A99F-000D3AB0CA26%257d%2522%2520first%253d%2522%257bFF4A2314-709B-E911-A994-000D3AB0C24C%257d%2522%2520%252f%253e%253c%252fcookie%253e" istracking="False" />

На самом деле, если я запускаю это через декодер, я получаю ожидаемую, более читаемую версию:

<cookie pagenumber="2" pagingcookie="<cookie page="1"><td_reportedon last="2019-06-25T19:09:37-00:00" first="2019-06-30T19:48:51-00:00" /><td_servicesummaryid last="{62B328C1-7C97-E911-A99F-000D3AB0CA26}" first="{FF4A2314-709B-E911-A994-000D3AB0C24C}" /></cookie>" istracking="False" />

Однако, если я установлю это при следующем запросе, что-то вроде этого:

<fetch nolock='true' page='2' count='5' paging-cookie="<cookie pagenumber="2" pagingcookie="%253ccookie%2520page%253d%25221%2522%253e%253ctd_reportedon%2520last%253d%25222019-06-25T19%253a09%253a37-00%253a00%2522%2520first%253d%25222019-06-30T19%253a48%253a51-00%253a00%2522%2520%252f%253e%253ctd_servicesummaryid%2520last%253d%2522%257b62B328C1-7C97-E911-A99F-000D3AB0CA26%257d%2522%2520first%253d%2522%257bFF4A2314-709B-E911-A994-000D3AB0C24C%257d%2522%2520%252f%253e%253c%252fcookie%253e" istracking="False" />" returntotalrecordcount='true'>
    <entity name='td_servicesummary'>
        //Query ommitted for brevity    
    </entity>
</fetch>

Мой запрос возвращает 400.

Я видел в некоторых блогах, что вам не нужно указывать файл cookie для пейджинга; это абсолютно не так для меня.

У кого-нибудь есть пейджинг с fetch, работающий через Web API?

...