我最近开始使用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");
}
以某种方式"完成发送!"消息停止出现在日志中,但是"开始发送消息"不断前来。 有没有人有任何建议如何进行?
答案 0 :(得分: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);
答案 1 :(得分:0)
如果您还没有解决超时问题,那么这里有个提示:尝试在另一个区域重新创建IoT中心(“美国西部”对我来说很稳定)。