我有一个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
}
答案 0 :(得分:0)
如果您收到未经授权的例外情况。然后,请检查设备客户端中使用的iot集线器连接字符串,以确认与连接字符串一起使用的共享访问策略是否具有所有权限,这是您需要的。
答案 1 :(得分:0)
我认为这与为受支持的平台所做的各种重构有关,您可能必须捕获所有异常,处理您想要的异常,并重新抛出您不需要的重构。根据平台,您可以包括:
using Microsoft.Azure.Devices.Client.Exceptions;
如果你想要探索,消息来源就在这里: