如何捕获Azure Device SDK中引发的错误?

时间:2018-11-14 13:46:09

标签: azure azure-iot-hub

我正在将Azure Device SDK用于.NET Core,以便将设备连接到Azure IoT中心。服务器有时会拒绝来自设备的某些消息(例如双更新或遥测消息),并以状态码400进行响应。结果,客户端抛出了异常,但由于其异步特性,它们被吞噬了Azure内部SDK,从不扔我的代码。

实际上如何通知我这些错误,以便我可以处理和显示它们?

我还可以从Azure Device 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

1 个答案:

答案 0 :(得分:0)