2016-11-15 9 views
0

Microsoft.Azure.Devices.Client.DeviceClientを使用してAzure IoTハブからのメッセージをリッスンするXamarinアプリケーションがあります。時には私は捕まえることができず、対処できないエラーを投げかけます。そのような例外は次のとおりです。Azure IoTHub例外をスローすることができません

Microsoft.Azure.Devices.Client.Exceptions.UnauthorizedException

この例外はちょうど私が取得しています例外の例、と私は確実にシステム時刻を変更して再作成することができるものです。他のIoTHubExceptionsは散発的で再現するのが難しいため、例外を試して捕捉する必要があります。

どのように私はこれらのIoTハブベースのエラーをキャッチすることができます教えてもらえますか?コードは次のとおりです。

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

は、このコードは 'タスクを返すように宣言された関数です'または' Task '?これらの呼び出しからそれがスローされていることも確かですか? – juunas

+0

はい、このメソッドのシグネチャは "private async Task StartReceiverAsync()"ですが、問題を引き起こしているのはこの呼び出しであると100%確信できません。私がIoTHub関連の何かをしているのは唯一の場所であり、問​​題は実行がこのコードに達すると発生します。 – Slicc

答えて

0

不正な例外が発生した場合。次に、デバイスクライアントで使用されているiotハブ接続文字列を確認して、接続文字列で使用される共有アクセスポリティがすべての特権を持っているかどうかを確認してください。

+0

ここでは例としてUnauthorized例外のみを使用しています。この例外は簡単に再作成できるためです。私の問題は、XamarinのAndroidアプリでIoTハブクライアントによってスローされた例外をキャッチできないことです。 – Slicc

+0

.netコンソールアプリケーションなどで同じ問題がありますか? – Jackie

0

これは、サポートされているプラ​​ットフォームで実行されているさまざまなリファクタリングと関係があり、すべての例外をキャッチし、必要なものを処理していないものを再処理しなければならない可能性が高いと思います。プラットフォームによっては、含めることができるかもしれない:あなたが洞窟探検のように感じる場合

using Microsoft.Azure.Devices.Client.Exceptions; 

は、情報源はここにある:

https://github.com/Azure/azure-iot-sdk-csharp/search?utf8=%E2%9C%93&q=using+Microsoft.Azure.Devices.Client.Exceptions

関連する問題