Docs Menu
Docs Home
/ /
Atlas Device SDK
/ /

同期エラーとタイムアウトの処理 - .NET SDK

項目一覧

  • クライアント ログ レベルの設定
  • ログ機能をカスタマイズする
  • タイムアウトの処理

Device Sync は SessionException経由でエラーを表します。 標準の例外プロパティに加えて、エラーのタイプに関する情報を含むErrorCodeにアクセスでき、厳密に型指定された処理ロジックを作成できます。

config.OnSessionError = (session, sessionException) =>
{
switch (sessionException.ErrorCode)
{
// See https://www.mongodb.com/ja-jp/docs/realm-sdks/dotnet/latest/reference/Realms.Sync.Exceptions.ErrorCode.html
// for a list of all error codes
case ErrorCode.BadQuery:
break;
}
};

注意

追加の例外情報

セキュリティ上の理由から、App Services は例外に関する最小限の情報しか送信しない場合がありますが、サーバー側のログにはより詳細な情報が含まれます。このような場合、 ヘルプリンク 例外のプロパティには、関連するログエントリへのリンクが含まれています。

Tip

一般的な Device Sync エラーのリストとその処理方法については、App Services Device Sync ドキュメントの「同期エラー 」を参照してください。

クライアント ロガーによってログに記録されるメッセージを制御するには、 LogLevelを使用します。

Logger.LogLevel = LogLevel.Debug;

Tip

アプリケーションの開発中にエラーを診断してトラブルシューティングするには、ログ レベルを debugまたはtraceに設定します。 本番環境の配置では、ログ レベルを減らしてパフォーマンスを向上させます。

カスタム ロガー関数を設定するには、 Logger.Defaultをカスタム Logger 関数に設定します。

using Realms.Logging;
Logger.LogLevel = LogLevel.All;
// customize the logging function:
Logger.Default = Logger.Function(message =>
{
// Do something with the message
});

同期セッション中に、イベントが例外をスローせずにタイムアウトする場合があります。 CancelAsyncOperationsOnNonFatalErrorstrueに設定すると、これらのイベントは例外をスローして処理できるようになります。 次のコードは、 CancelAsyncOperationsOnNonFatalErrorsプロパティと、タイムアウトした場合に例外をスローする3イベントを設定する例を示しています。

var config = new FlexibleSyncConfiguration(app.CurrentUser!)
{
CancelAsyncOperationsOnNonFatalErrors = true,
};
// These operations will throw an exception
// on timeout or other transient sync session errors.
var realm = await Realm.GetInstanceAsync(config);
var session = realm.SyncSession;
await session.WaitForUploadAsync();
await session.WaitForDownloadAsync();

戻る

Flexible Sync サブスクリプションの管理