如果 IoTHub 设备在连接状态下被禁用,预期返回的错误代码是什么?

What is the expected error code returned if the IoTHub device is disabled while still connected?

我想知道如果 IoTHub 设备在 IoTHub 中仍处于连接状态时被禁用,预期返回的错误代码是什么。 我在以下场景中对其进行了测试:

场景一:

  1. 设备已连接到 iothub。
  2. 在 Azure 物联网资源管理器中禁用设备。
  3. 设备已断开连接。

实际结果:收到的错误代码是IOTHUB_CLIENT_CONNECTION_NO_NETWORK

我预计错误代码应该是IOTHUB_CLIENT_CONNECTION_DEVICE_DISABLED

场景B:

  1. 首先在 iothub 中禁用设备。
  2. 设备将尝试连接。 实际结果:收到的错误代码是IOTHUB_CLIENT_CONNECTION_DEVICE_DISABLED

预计会出现场景 B。场景A怎么样?

非常感谢您的支持!

这似乎与 MQTT 3.1.1 中有限的错误报告有关。当设备在 IoTHub 中被禁用时,服务器将断开连接,它没有隐式机制来告诉客户端断开连接的原因。客户端遇到网络问题然后浮出水面。

在第二种情况下,一旦启动 TCP 连接,服务器就会收到 CONNECT 帧,但由于设备被禁用,服务器 returns 0x03 被翻译为已禁用。正如您在规范中看到的那样,可能的错误再次受到限制。 http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/os/mqtt-v3.1.1-os.html 第 3.2.2.3 节