Docs 菜单
Docs 主页
/ /
Atlas Device SDKs
/ /

处理同步错误和超时 - .NET SDK

在此页面上

  • 设置客户端日志级别
  • 自定义日志记录功能
  • 处理超时

Device Sync通过 SessionExceptions表示错误。 除了标准异常属性之外,您还可以访问权限ErrorCode ,其中包含有关错误类型的信息,并允许您使用强类型处理逻辑。

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

注意

其他异常信息

出于安全考虑, App Services可能仅发送有关异常的最少量信息,但服务器端日志将包含更多详细信息。在这些情况下, HelpLink 异常上的属性包含指向关联日志条目的链接。

提示

有关常见 错误的列表以及如何处理这些错误,请参阅Device Sync Atlas App ServicesDevice Sync文档中的 同步错误 。

要控制客户端记录器记录哪些消息,请使用LogLevel:

Logger.LogLevel = LogLevel.Debug;

提示

要在开发应用程序时诊断和排除错误,请将日志级别设置为 debugtrace 。 对于生产部署,请降低日志级别以提高性能。

要设置自定义记录器函数,请将Logger.Default设置为自定义记录器函数。

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();

后退

管理灵活同步订阅