azure - 设备每 65 分钟重新连接到 Azure IoT 中心

标签 azure .net-core iot azure-iot-hub

我们有设备通过 MQTT 连接到IoT 中心(默认设置),并且它们都每65 分钟(精确到毫秒)精确地重新连接一次。

设备应用详细信息:

  • .net 核心 2.1
  • 图书馆:
    • Microsoft.Azure.Devices v1.17.0
    • Microsoft.Azure.Devices.Client v1.18.0
  • 连接类型:MQTT
  • 操作系统:Windows 10 IoT Enterprise(戴尔工业 PC)、Raspbian (Raspberry PI 3) 和 Windows IoT Core (Raspberry PI 3) - 全部行为相同。

我们正在使用IoT 中心的免费版本/层

重连发生时:

  • DeviceClient StatusChangesHandler 报告 ConnectionStatus:Disconnected_Retrying 和原因:No_Network
  • IoT 中心诊断报告
    1. deviceDisconnect => 404104 DeviceConnectionClosedRemotely
    2. deviceConnect => 401003 IoTHubUnauthorized
    3. deviceConnect => 没有错误,成功
  • DeviceClient StatusChangesHandler 报告 ConnectionStatus:Connected 和原因:Connection_Ok

这对于我们的运营来说并不是一个非常关键的问题,因为在现阶段它是一个 PoC,每次重新连接大约需要 2 秒,但是,我们希望在上线之前了解此行为的根本原因。

最佳答案

您是否使用 SAS token 通过 IoT 中心进行身份验证?如果是这样,您很可能在刷新 token 时遇到断开连接。这是由 SDK 处理的,在这种情况下,SDK 使用重试策略来重新连接。如果未明确设置重试策略,则它将使用默认值(超时 4 分钟的指数退避)。如果您将默认设置为不重试,则无法在没有干扰的情况下重新建立连接。

Reliability features in the SDKs

Security tokens in IoT Hub

关于azure - 设备每 65 分钟重新连接到 Azure IoT 中心,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52041271/

相关文章:

python - Azure-列具有无法参与列存储索引的数据类型

azure - 自动 SQL 导出失败

node.js - Nodejs 生成重复的 http 请求

java - 无需等待响应的 HTTP 请求

azure - Runbook 模块部署失败,因为它达到了终端预配状态 'Failed'

azure - 是否有解决方法可以让 Azure ARM 模板复制 block 接受零长度数组?

.net-core - 如何排除程序集被打包到 PublishSingleFile 应用程序中

c# - 静态变量是否是线程安全的,因为您可以从多个线程读取/写入而不会崩溃?

c# - AspNet 核心标识 GetExternalLoginInfoAsync 始终为空

qt - Qt 可以用于为 windows IoT 核心开发应用程序吗?