Я использую Azure Device SDK для .NET Core, чтобы подключить мои устройства к Azure IoT Hub. Время от времени сервер отклоняет некоторые сообщения (например, двойные обновления или телеметрические сообщения) от устройств и отвечает кодом состояния 400. В результате возникают исключения на стороне клиента, но из-за его асинхронного характера они проглатываются где-то внутри Azure. SDK и никогда не бросать на мой код.
Как я могу получать уведомления об этих ошибках, чтобы я мог обрабатывать и отображать их?
Я также вижу из кода SDK устройства Azure, что в нем используется какая-либо запись в журнал (EventSource), но это никогда не включается в коде:
From Logging.Common.cs:
Log.IsEnabled() // always returns false
Можете ли вы указать мне, каким образом я могу: 1) фактически включить регистрацию в SDK Azure Device и 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