3

背景 我需要一份我在 Azure ACS 中注册的所有服务标识名称的列表。我有一个从https://myaccesscontrol.accesscontrol.windows.net/v2/mgmt/service获得的 Azure 管理服务参考。对于本次讨论,“myaccesscontrol”前缀是任意的。如果我理解正确,您可以使用不同的订阅命名空间前缀并获得相同的结果。这是 Azure 在我订阅时为我提供的服务端点。它公开了一个 ManagementService 接口。当我获得服务身份列表时

  DataServiceQuery<ServiceIdentity> identities = managementService.ServiceIdentities;

我取回了一个对象,该对象包含了我期望的所有身份。当我展开列表时,我得到了前 50 个。这是典型的分页响应,我希望有一个继续令牌可以让我获得下一个“页面”。

问题 我看不到如何使用 ManagementServiceReference.ManagementService 接口来获取延续令牌。

讨论 如何:加载分页结果(WCF 数据服务)在http://msdn.microsoft.com/en-us/library/ee358711.aspx提供了一个示例,其中可以查询来自 LINQ 上下文的 QueryOperationResponse 响应以使用令牌 = 继续response.GetContinuation() QueryOperationResponse 从 LINQ 上下文 Execute() 中检索。

在我拥有的一些 Azure 示例代码中,有一些针对 blob、表和队列的分页示例,其中数据收集在 ResultSegment 中。ResultSegment 具有 Boolean HasMoreResults 成员、ResultContinuationToken ContinuationToken 成员以及接受和维护这些成员以支持分页操作的方法。

我看不到如何从 DataServiceQuery 获取延续。我没有看到 Azure 公开的 ManagementServiceReference.ManagementService 支持服务标识的分页列表,即使该服务显然正在分页它发送给我的结果。您能否指出正确的文章,该文章将向我展示如何以我获得 Continuation 的方式处理 DataServiceQuery ?

4

1 回答 1

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() );
}
于 2012-02-08T22:05:45.320 回答