同期エラーとタイムアウトの処理 - .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 });
タイムアウトの処理
同期セッション中に、イベントが例外をスローせずにタイムアウトする場合があります。 CancelAsyncOperationsOnNonFatalErrorsをtrue
に設定すると、これらのイベントは例外をスローして処理できるようになります。 次のコードは、 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();