You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure IoT Hub设备查询分页续令牌失效,始终返回首页设备

问题解决:Azure IoT Hub设备分页始终返回前10台设备

你的问题核心在于错误手动构造了continuationToken,Azure IoT Hub的查询续传令牌不是自定义格式,必须依赖上一次查询结果返回的令牌才能实现分页。

正确的分页实现逻辑

  1. 首次查询无需传入continuationToken,直接获取第一页数据,同时记录返回的续传令牌
  2. 后续分页查询时,传入上一次查询得到的continuationToken,而非自行拼接格式

修改后的代码示例:

registryManager = RegistryManager.CreateFromConnectionString("{iot hub connection string}");
int pageSize = 10;
var query = registryManager.CreateQuery("SELECT * FROM devices", pageSize);

string continuationToken = null;
// 循环获取到目标页码对应的续传令牌
for (int i = 1; i < pageNumber; i++)
{
    var page = await query.GetNextAsTwinAsync(new QueryOptions() { ContinuationToken = continuationToken });
    continuationToken = query.ContinuationToken;
    // 无更多数据时提前终止
    if (string.IsNullOrEmpty(continuationToken))
    {
        break;
    }
}

// 获取目标页码的设备列表
var targetPage = await query.GetNextAsTwinAsync(new QueryOptions() { ContinuationToken = continuationToken });
var deviceList = targetPage.ToList();

关键说明

  • Azure IoT Hub查询不支持SQL式的OFFSET/SKIP语法,无法通过页码直接计算跳过条目,必须通过续传令牌逐步分页
  • 手动拼接的skip=&total=格式令牌不被IoT Hub识别,因此每次查询都会默认返回第一页数据
  • 建议使用await异步调用,避免直接用.Result引发线程阻塞问题

内容的提问来源于stack exchange,提问作者Clayton

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 18:28:01