Могу ли я использовать пейджинг при получении идентификаторов служб из ACS - PullRequest
3 голосов
/ 08 февраля 2012

Фон Мне требуется список всех имен удостоверений служб, которые я зарегистрировал в Azure ACS. У меня есть ссылка на службу управления Azure, которую я получил от https://myaccesscontrol.accesscontrol.windows.net/v2/mgmt/service. Префикс «myaccesscontrol» для этого обсуждения произвольный. Вы можете использовать другой префикс пространства имен подписки и получить те же результаты, если я правильно понимаю. Это конечная точка службы, которую Azure предоставляет мне при подписке. Он предоставляет интерфейс ManagementService. Когда я получаю список идентификаторов услуг

  DataServiceQuery<ServiceIdentity> identities = managementService.ServiceIdentities;

Я возвращаю объект, который имеет количество всех ожидаемых тождеств. Когда я расширяю список, я получаю первые 50. Это типично для постраничного ответа, и я ожидаю, что есть токен продолжения, который позволит мне получить следующую «страницу».

Задача Я не вижу, как интерфейс ManagementServiceReference.ManagementService можно использовать для получения токена продолжения.

Обсуждение Как загрузить выгружаемые результаты (службы данных WCF) по адресу http://msdn.microsoft.com/en-us/library/ee358711.aspx предоставляет пример, в котором можно запросить ответ QueryOperationResponse из контекста LINQ для продолжения с помощью token = response.GetContinuation () QueryOperationResponse извлекается из контекста LINQ Execute ().

В некоторых образцах кода Azure, которые у меня есть, есть примеры разбивки на страницы для больших двоичных объектов, таблиц и очередей, где данные собираются в ResultSegment. ResultSegment имеет логический член HasMoreResults, член ResultContinuationToken ContinuationToken и методы, которые принимают и поддерживают их для поддержки операций подкачки.

Я не вижу, как получить Continuation из DataServiceQuery. Я не вижу, чтобы ManagementServiceReference.ManagementService, предоставляемый Azure, поддерживал постраничный список идентификаторов служб, хотя служба, по-видимому, отправляет на страницы результаты, которые она отправляет мне. Можете ли вы указать мне правильную статью, которая покажет мне, как можно обрабатывать DataServiceQuery таким образом, чтобы я получил Continuation обратно?

1 Ответ

1 голос
/ 09 февраля 2012

Используя пример проекта службы управления, который доступен здесь , то, что вы хотите, будет выглядеть примерно так:

ManagementService mgmtSvc = ManagementServiceHelper.CreateManagementServiceClient();
List<ServiceIdentity> serviceIdentities = new List<ServiceIdentity>();

// Get the first page
var queryResponse = mgmtSvc.ServiceIdentities.Execute();
serviceIdentities.AddRange( queryResponse.ToList() );

// Get the rest
while ( null != ( (QueryOperationResponse)queryResponse ).GetContinuation() )
{
    DataServiceQueryContinuation<ServiceIdentity> continuation =
        ( (QueryOperationResponse<ServiceIdentity>)queryResponse ).GetContinuation();
    queryResponse = mgmtSvc.Execute( continuation );
    serviceIdentities.AddRange( queryResponse.ToList() );
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...