如何捕获 Azure Device SDK 中引发的错误?
How to catch errors raised in Azure Device SDK?
我正在为 .NET Core 使用 Azure Device SDK,以便将我的设备连接到 Azure IoT 中心。服务器有时会拒绝来自设备的某些消息(如孪生更新或遥测消息)并以状态代码 400 进行响应。因此,客户端会抛出异常,但由于其异步性质,它们会被 Azure 内部的某个地方吞没SDK,从来没有扔过我的代码。
如何实际通知我这些错误,以便我处理和显示它们?
我还可以从 Azure 设备 SDK 代码中看到它使用了某种日志记录 (EventSource),但这在代码中从未启用:
From Logging.Common.cs:
Log.IsEnabled() // always returns false
你能告诉我一些我可以 1) 在 Azure 设备 SDK 中实际启用日志记录和 2) 找到实际记录的内容的方法吗?
更新:有关在某处吞下的异常的详细信息
// Fired here after I send twin reported properties to server:
AmqpTransportHandler.VerifyResponseMessage:
if (status >= 400)
{
throw new InvalidOperationException("Service rejected the message with status: " + status);
}
// Then becomes caught and re-fired here:
AmqpTransportHandler.SendTwinPatchAsync:
throw AmqpClientHelper.ToIotHubClientContract(exception);
// Then it disappears somewhere in the "dance" of the async tasks
我正在为 .NET Core 使用 Azure Device SDK,以便将我的设备连接到 Azure IoT 中心。服务器有时会拒绝来自设备的某些消息(如孪生更新或遥测消息)并以状态代码 400 进行响应。因此,客户端会抛出异常,但由于其异步性质,它们会被 Azure 内部的某个地方吞没SDK,从来没有扔过我的代码。
如何实际通知我这些错误,以便我处理和显示它们?
我还可以从 Azure 设备 SDK 代码中看到它使用了某种日志记录 (EventSource),但这在代码中从未启用:
From Logging.Common.cs:
Log.IsEnabled() // always returns false
你能告诉我一些我可以 1) 在 Azure 设备 SDK 中实际启用日志记录和 2) 找到实际记录的内容的方法吗?
更新:有关在某处吞下的异常的详细信息
// Fired here after I send twin reported properties to server:
AmqpTransportHandler.VerifyResponseMessage:
if (status >= 400)
{
throw new InvalidOperationException("Service rejected the message with status: " + status);
}
// Then becomes caught and re-fired here:
AmqpTransportHandler.SendTwinPatchAsync:
throw AmqpClientHelper.ToIotHubClientContract(exception);
// Then it disappears somewhere in the "dance" of the async tasks