La sincronización del dispositivo representa errores a través de Excepciones de sesión. Además de las propiedades de excepción estándar, tiene acceso a un código de error que contiene información sobre el tipo de error y le permite implementar una lógica de gestión fuertemente tipada.
config.OnSessionError = (session, sessionException) => { switch (sessionException.ErrorCode) { // See https://www.mongodb.com/es/docs/realm-sdks/dotnet/latest/reference/Realms.Sync.Exceptions.ErrorCode.html // for a list of all error codes case ErrorCode.BadQuery: break; } };
Nota
Información adicional sobre excepciones
Por razones de seguridad, los Servicios de Aplicaciones pueden enviar solo una cantidad mínima de información sobre una excepción, pero los registros del servidor contendrán más detalles. En estos casos, el HelpLink La propiedad de la excepción contiene un enlace a la entrada de registro asociada.
Tip
Para obtener una lista de errores comunes de sincronización de dispositivos y cómo solucionarlos, consulte Errores de sincronización en la documentación de sincronización de dispositivos de App Services.
Establecer el nivel de registro del cliente
Para controlar qué mensajes registra el registrador del cliente, utilice LogLevel:
Logger.LogLevel = LogLevel.Debug;
Tip
Para diagnosticar y solucionar errores mientras desarrolla su aplicación, configure el nivel de registro en debug o trace. Para implementaciones de producción, reduzca el nivel de registro para mejorar el rendimiento.
Personalizar la función de registro
Para configurar una función de registrador personalizada, configure Logger.Default en una función de registrador personalizada.
using Realms.Logging; Logger.LogLevel = LogLevel.All; // customize the logging function: Logger.Default = Logger.Function(message => { // Do something with the message });
Manejar tiempos de espera
Durante las sesiones de sincronización, los eventos pueden agotar el tiempo de espera sin generar una excepción. Puede establecer CancelAsyncOperationsOnNonFatalErrors en true para que estos eventos generen una excepción que pueda gestionar. El siguiente código muestra un ejemplo de cómo configurar la CancelAsyncOperationsOnNonFatalErrors propiedad y 3 los eventos que generarán una excepción si se agota el tiempo de espera:
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();