我们已经将设备通过MQTT连接到 IoT Hub (默认设置),并且它们都每隔 65分钟(精确到毫秒)保持重新连接。
设备应用程序详细信息:
Microsoft.Azure.Devices v1.17.0
Microsoft.Azure.Devices.Client v1.18.0
我们正在使用 IoT版本中心的免费版本/层。
重新连接时:
DeviceClient StatusChangesHandler
报告ConnectionStatus:Disconnected_Retrying
和原因:No_Network
deviceDisconnect
=> 404104 DeviceConnectionClosedRemotely
deviceConnect
=> 401003 IoTHubUnauthorized
deviceConnect
=>没有错误,成功 DeviceClient StatusChangesHandler
报告ConnectionStatus:Connected
和原因:Connection_Ok
这对于我们的操作而言不是一个非常关键的问题,因为在此阶段它是一个PoC,每次重新连接大约需要2秒钟,但是,我们希望在上线之前了解此行为的根本原因。
答案 0 :(得分:2)
您是否使用SAS令牌向IoT中心进行身份验证?如果是这样,刷新令牌时您很可能会遇到断开连接的情况。这由SDK处理,在这种情况下,SDK使用重试策略重新连接。如果未明确设置重试策略,则它使用默认策略(超时4分钟的指数退避)。如果将默认值设置为不重试,则在没有干扰的情况下无法重新建立连接。
答案 1 :(得分:0)
DeviceClient.RetryPolicy = RetryPolicyType.No_Retry
在Microsoft.Azure.Devices.Client v1.18.0中已被弃用。请尝试使用 Microsoft.Azure.Devices.Client.SetRetryPolicy(IRetryPolicy retryPolicy),如以下代码。
deviceClient.SetRetryPolicy(new NoRetry());