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

调用Azure IoT Hub REST API清除设备待发命令报InvalidProtocolVersion错误

Azure IoT Hub 清除设备云到设备消息接口返回InvalidProtocolVersion排查方案

这个错误基本都是请求构造不符合服务端预期导致的,和SAS Token权限关系不大,按以下顺序核对即可解决:

  • 首先确认请求方法和路径完全正确
    接口固定使用DELETE方法,路径格式严格为:
    https://<你的IoT Hub全称>.azure-devices.net/messages/devicebound/<目标设备ID>?api-version=2021-04-12
    最常见的错误是把路径写成/devices/<设备ID>/messages/devicebound这类格式,服务端会把这类路径的请求路由到旧版协议处理入口,直接返回协议版本不匹配错误。
  • 补全缺失的必填请求头
    除了Authorization头存放SAS Token外,必须手动添加两个请求头,Postman默认发无Body的DELETE请求时经常漏带:
    • Content-Type: application/json
    • Content-Length: 0
      注意这个接口不需要传任何请求体,不要在Body栏选form-data、x-www-form-urlencoded等格式,直接选none即可,多余的请求体内容也会触发协议解析错误。
  • 确认api-version参数传递正确
    api-version必须作为URL查询参数传递,不要放到请求头里,也不要使用带-preview后缀的预览版版本号,2021-04-12是目前该接口稳定兼容的版本,不要用2018年之前的旧版本号。
  • 最后核对SAS权限
    如果以上配置都对还是报错,再检查SAS Token是用IoT Hub的服务策略(Service权限)或者iothubowner策略生成的,设备级SAS、注册表只读权限的SAS调用该接口会报权限错误,不会返回协议版本类错误,这步放最后核对即可。

可直接对照的正确请求样例:

请求方法:DELETE
请求URL:https://your-hub-name.azure-devices.net/messages/devicebound/target-device-01?api-version=2021-04-12
请求头配置:

Authorization: SharedAccessSignature sr=your-hub-name.azure-devices.net&sig=xxx&se=1735689600&skn=iothubowner
Content-Type: application/json
Content-Length: 0

请求体:无

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 20:51:22