Azure IoT设备客户端意外断开连接

时间:2018-07-05 16:21:48

标签: c# azure-iot-sdk

一段时间后,我的设备客户端正在断开连接。我通过订阅连接状态更改事件(deviceClient.SetConnectionStatusChangedHandler)注意到了这一点。

我的连接被关闭,状态为disabled,原因为client_close。当我不调用任何代码以关闭连接时怎么办?我没有打电话给.CloseAsync.Dispose

鉴于此SDK旨在明确支持IoT应用,我希望此连接一次可以使用数年,而不是几分钟。

我的代码:

var authentication = new DeviceAuthenticationWithRegistrySymmetricKey(DeviceId, DeviceKey);

var deviceClient = DeviceClient.Create(HubHostName, authentication, TransportType.Amqp);

deviceClient.SetConnectionStatusChangesHandler(ConnectionStatusChangeHandler);

await deviceClient.SetMethodDefaultHandlerAsync(MethodCallback, null);

while (true)
{
    try
    {
        var message = await deviceClient.ReceiveAsync();

        if (message != null)
        {
             Console.WriteLine("Message received.");
             await deviceClient.CompleteAsync(message);
        }
    }
    catch (Exception ex)
    {
         Console.WriteLine(ex);
    }
 }

如何防止这种情况发生?失败了,我该如何恢复?

我使用的SDK版本:

 <PackageReference Include="Microsoft.Azure.Devices.Client" Version="1.17.0" />

这是从Windows 10上运行的.netcoreapp2.1应用程序调用的。

0 个答案:

没有答案