WindowsコンソールアプリケーションからMicrosoft AzureのIoT Hubへメッセージを送信する時の例外処理についてメモ。
IoT Hubのチュートリアルをベースにする。
なお、IoT Hub側はすでに下記のチュートリアルで設定済みであることを前提とする。
なお、IoT Hub側はすでに下記のチュートリアルで設定済みであることを前提とする。
Azure IoT Hub for .NETの使用
アプリケーションからIoT Hubへメッセージを送信するまでの流れとしては
1.DeviceClientのインスタンス作成
2.SendAsyncでメッセージを送信
1.DeviceClientのインスタンス作成
2.SendAsyncでメッセージを送信
この時、どんな例外が発生するかはドキュメントが見つけられなかったので調査と実験をおこなった。
Program.cs -SimulatedDevice-
Program.cs -SimulatedDevice-
Console.WriteLine("Simulated device\n");
deviceClient = DeviceClient.Create(iotHubUri,
new DeviceAuthenticationWithRegistrySymmetricKey("myFirstDevice",
deviceKey),
TransportType.Mqtt);
SendDeviceToCloudMessagesAsync();
Console.ReadLine();
SendDeviceToCloudMessagesAsync()時に発生する例外
·ArgumentException
·ArgumentNullException
·FormatException
·DeviceNotFoundException
·UnautherizedException
·AggregateException
·TimeoutException
·ArgumentException
·ArgumentNullException
·FormatException
·DeviceNotFoundException
·UnautherizedException
·AggregateException
·TimeoutException
Createメソッドでスローされる例外
·ArgumentException
·ArgumentNullException
·FormatException
·ArgumentException
·ArgumentNullException
·FormatException
·ArgumentException
base64でエンコードされているデバイスキーがデコードできない時にスローされる。
base64でエンコードされているデバイスキーがデコードできない時にスローされる。
·ArgumentNullException
デバイス名、デバイスキーまたはその両方が空文字、nullの時にスローされる。
デバイス名、デバイスキーまたはその両方が空文字、nullの時にスローされる。
·FormatException
デバイスURIが”.net"で終わってない時にスローされる。
デバイスURIが”.net"で終わってない時にスローされる。
SendDeviceToCloudMessagesAsync()時に発生する例外
·DeviceNotFoundException
·UnautherizedException
·AggregateException
·TimeoutException
·DeviceNotFoundException
·UnautherizedException
·AggregateException
·TimeoutException
·DeviceNotFoundException
指定されたデバイス名がIoT Hub側で見つからない時、
またはIoT Hub側で指定したデバイス名のデバイスが無効になっている時にスローされる。
指定されたデバイス名がIoT Hub側で見つからない時、
またはIoT Hub側で指定したデバイス名のデバイスが無効になっている時にスローされる。
·UnautherizedException
不正なデバイスキーが指定されている時にスローされる。
またデバイスの時刻が大きくズレている時にも発生する。
不正なデバイスキーが指定されている時にスローされる。
またデバイスの時刻が大きくズレている時にも発生する。
·AggregateException
SendEventAsyncメソッド内で複数の例外が発生した時にスローされる。
SendEventAsyncメソッド内で複数の例外が発生した時にスローされる。
·TimeoutException
プロパティに設定されている時間内にメッセージの送信が完了しない場合にスローされる。
プロパティに設定されている時間内にメッセージの送信が完了しない場合にスローされる。