IotHubClientTransientException:发生暂时性错误,请重试

IotHubClientTransientException: Transient error occured, please retry

我在上板中安装了一个 UWP 应用程序,它读取发送到该设备 ID 的 IotHub 消息。

deviceClient = DeviceClient.CreateFromConnectionString(deviceConnectionString, TransportType.Mqtt);
Message receivedMessage = await deviceClient.ReceiveAsync();

该应用程序运行良好并正确读取消息,但有时我会遇到以下异常:

IotHubClientTransientException: Transient error occured, please retry.

我了解到这些错误可能是由错误的连接字符串引起的,但在我的情况下是不可能的。

有人可以帮助我吗?

该错误很可能是由网络连接错误引起的。只需添加重试策略即可。您可以自己编写或使用像 Polly.Net

这样的库

在分布式世界中,应该预料到连接问题,所以我认为您的代码没有任何问题,只是应该更有弹性。我认为异常甚至告诉你应该重试真的很好,大多数时候你必须自己弄清楚。

可以找到 Azure 团队的更多指导 here。在您的情况下,重试模式非常适合:

Retry

Enable an application to handle anticipated, temporary failures when it tries to connect to a service or network resource by transparently retrying an operation that's previously failed.