Azure IoTHub抛出我无法捕获的异常

时间:2016-11-15 13:30:58

标签: azure azure-iot-hub

我有一个Xamarin应用程序使用Microsoft.Azure.Devices.Client.DeviceClient来侦听来自Azure IoT中心的消息。偶尔我会收到错误,我无法抓住并处理。一个例外是:

Microsoft.Azure.Devices.Client.Exceptions.UnauthorizedException

此异常只是我获得的异常的一个示例,我可以通过更改系统时间可靠地重新创建异常。其他IoTHubExceptions是零星的,很难重新创建,因此需要尝试捕获异常。

有人能告诉我如何捕获这些基于IoT hub的错误吗?代码是:

try
{
   await _deviceClientInbound.OpenAsync();

   // execution never gets passed this line and the exception is eventually thrown, having reached this point
   Message receivedMessage = await _deviceClientInbound.ReceiveAsync();

   if (receivedMessage == null) continue;

   await _deviceClientInbound.CompleteAsync(receivedMessage);
}
catch (Exception e)
{
   // Exception is never caught in here ...
   // How can I catch the IoTHubException based exceptions
}

2 个答案:

答案 0 :(得分:0)

如果您收到未经授权的例外情况。然后,请检查设备客户端中使用的iot集线器连接字符串,以确认与连接字符串一起使用的共享访问策略是否具有所有权限,这是您需要的。

答案 1 :(得分:0)

我认为这与为受支持的平台所做的各种重构有关,您可能必须捕获所有异常,处理您想要的异常,并重新抛出您不需要的重构。根据平台,您可以包括:

using Microsoft.Azure.Devices.Client.Exceptions;

如果你想要探索,消息来源就在这里:

<强> https://cloudviewer.blob.core.windows.net/450-423-422-392/thumbnail.jpeg?sv=2015-12-11&ss=b&srt=o&sp=r&se=2016-12-09T17:28:32Z&st=2016-12-08T15:28:32Z&spr=https&sig=EgnmcRSSKol%2BqR2A4aBdFhL9dmkhGJVHOw9W%2BC8%2FTKI%3D