Можно ли использовать пейджинг при получении удостоверений службы от ACS

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

  DataServiceQuery<ServiceIdentity> identities = managementService.ServiceIdentities;

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

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

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

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

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


person SkipSailors    schedule 08.02.2012    source источник


Ответы (1)


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

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() );
}
person Andrew Lavers    schedule 08.02.2012
comment
Потрясающе, спасибо. Работает на моей машине. Я нахожу требования к приведению типов немного сложными для понимания, хотя я думаю, что привыкну к этому. - person SkipSailors; 11.02.2012