C#AmazonDeviceFarmClient ListDeviceAsync未返回设备的完整列表

C#AmazonDeviceFarmClient ListDeviceAsync未返回设备的完整列表,c#,amazon-web-services,aws-device-farm,C#,Amazon Web Services,Aws Device Farm,我们使用AmazonDeviceFarmClient.listdeviceasync调用和一个非常简单的ListDevicesRequest,以获得C#平台中设备场中可用的所有设备的列表 我们的代码示例如下: var cfg = new AmazonDeviceFarmConfig { RegionEndpoint = RegionEndpoint.USWest2 }; using (var client = new AmazonDeviceFarmClient(new BasicAW

我们使用
AmazonDeviceFarmClient.listdeviceasync
调用和一个非常简单的
ListDevicesRequest
,以获得C#平台中设备场中可用的所有设备的列表

我们的代码示例如下:

var cfg = new AmazonDeviceFarmConfig
{
    RegionEndpoint = RegionEndpoint.USWest2
};

using (var client = new AmazonDeviceFarmClient(new BasicAWSCredentials([DeviceFarmAccessKey], [DeviceFarmSecretKey]), cfg))
{
    var arn = GetProjectArn();

    var response = client.ListDevicesAsync(new ListDevicesRequest
    {
        Arn = arn
    }).Result;
}
在Powershell/python上,使用
aws devicefarm list devices
命令返回所有可能设备的综合列表

使用我们的C#代码,我们得到一个被截断的列表,缺少我们需要的几个设备,尽管没有过滤器。我们尝试了各种方法,包括更改API用户的权限,以及更改区域,但没有成功

看起来我们最好的做法是在C#环境中运行powershell脚本,而不是使用C#Device Farm API,因为C#Device Farm API的list devices命令似乎不起作用


考虑到我们正在使用
result
关键字等待结果,我不认为这是一个异步问题。

正如Jeroen Mostert所指出的,我们错过了NextToken属性。它向下发送了一个不完整的列表(一个不均匀的数字,如236,这使我们认为它不是分页类型的问题),并且在重复调用同一个方法时使用NextToken给了我们剩下的结果


感谢您的及时回复

ListDevicesRequest
有一个诱人的
NextToken
属性,这意味着这是许多HTTP API中的一种,其设计方式是只根据需要枚举尽可能多的内容(以响应性和节省资源的名义),如果需要更多内容,则需要显式继续。尝试使用该令牌集再次调用,以查看是否获得更多(然后可能需要循环该令牌,直到它不再返回任何内容)。这就是修复方法。我有点困惑,因为它发送的结果数量不均衡(大约234个)。使用next token属性,我们得到了剩余的17台左右的设备。非常感谢你指出这一点,因为我把自己弄进了一个小兔子洞!数量可能不受行数(这很明显)的限制,而是受发送的数据量(以字节为单位)或生成结果所需的时间,甚至是跨服务器分片的内容的限制。可能有些事情或多或少是合理的,但你看不到。:-)