使用 Azure IoT 中心设备预配服务进行故障排除

由于存在许多可能的故障点(例如证明失败、注册失败等),IoT 设备的预配问题有时很难排查。若要详细了解如何将 Azure Monitor 与 DPS 配合使用,请参阅监视 Azure IoT 中心设备预配服务

常见错误代码

使用下表来了解和解决常见错误。

错误代码 说明 HTTP 状态代码
400 请求正文无效;例如,它不能进行分析,或者对象无法验证。 400 格式错误
401 授权令牌无法验证;例如,它已过期或无法应用到请求的 URI。 此错误代码也会在 TPM 证明流中返回给设备。 401 未授权
404 设备预配服务实例或资源(例如注册)不存在。 404 未找到
405 客户端服务知道请求方法,但目标服务不认识此方法;例如,REST 操作缺少注册或注册 ID 参数 不允许 405 方法
409 该请求无法完成,因为目标设备预配服务实例的当前状态存在冲突;例如,客户已经创建了数据点,并且在尝试再次重新创建相同的数据点。 409 冲突
412 根据 RFC7232 规范,请求中的 ETag 与现有资源中的 ETag 不匹配。 412 先决条件失败
415 服务器拒绝接受该请求,因为有效负载格式采用了不受支持的格式。 有关受支持的格式,请参阅 IoT 中心设备预配服务 REST API 415 不支持的媒体类型
429 服务限制了操作。 对于具体的服务限制,请参阅 IoT 中心设备预配服务限制 429 请求过多
500 发生内部错误。 500 内部服务器错误

建议的操作

  • 如果 IoT Edge 设备无法启动,且出现错误消息 failed to provision with IoT Hub, and no valid device backup was found dps client error,请参阅 IoT Edge (1.1) 文档中的 DPS 客户端错误

  • 对于“401 未授权”、“403 禁止访问”或“404 未找到”错误,可通过调用 DPS 注册 API 来执行完全重新注册。

  • 对于 429 错误,请遵循 IoT 中心的重试模式(具有指数退避,随机抖动)。 可以遵循 SDK 提供的 retry-after 标头。

  • 对于 500 系列服务器错误,请使用缓存凭据或设备注册状态查找 API 调用来重试连接

要了解相关的最佳做法(例如重试操作),请参阅大规模 IoT 设备部署的最佳做法

后续步骤