0

我最近开始使用 Azure-Iot-SDK,想知道如何调查这种行为。我的应用程序可以在一段时间内向 IoT 中心发送消息,但突然停止发送。没有错误或任何其他可以帮助我找到根本原因的东西。只需重新启动应用程序(准确地说是一项服务)就足以让它再次工作。

代码是这样的(在 DataChangedEvent 上):

try {    
    deviceClient = DeviceClient.Create(connectionString, x509Certificate, tType);
    Log("Start sending message")
    await deviceClient.SendEventAsync(message);
    DoLogging("Done sending!");
}
catch (Exception e)
{
    moreLogging("Error occurred");
}

不知何故,“完成发送!” 消息停止出现在日志中,但“开始发送消息”不断出现。有人对如何进行有任何建议吗?

4

2 回答 2

0

SendEventAsync方法实现,

异步操作应重试,直到 OperationTimeoutInMilliseconds 属性中指定的时间到期或发生不可恢复的错误(身份验证或超出配额)。

所以检查该OperationTimeoutInMilliseconds值,看看达到超时后是否有错误发生。

同时,您可以通过注册这样的处理程序来监控连接状态:

deviceClient.SetConnectionStatusChangesHandler(ConnectionStatusChangeHandler);

处理程序可能如下所示:

                static void ConnectionStatusChangeHandler(ConnectionStatus status, ConnectionStatusChangeReason reason)
                {
                    Console.WriteLine();
                    Console.WriteLine("Connection Status Changed to {0}", status);
                    Console.WriteLine("Connection Status Changed Reason is {0}", reason);
                    Console.WriteLine();
                }

您可以尝试这种方式,看看是否有帮助:

   await deviceClient.SendEventAsync(eventMessage).ConfigureAwait(false);
于 2018-04-06T05:50:00.767 回答
0

如果您尚未修复超时,这里有一个提示:尝试在另一个区域重新创建您的 IoT 中心(“美国西部”对我来说稳定工作)。

于 2019-05-29T22:34:10.557 回答