c #, Xamarin.Формы и контекстная информация SentrySDK не попадают в ошибки sentry

#c# #xamarin.forms #sentry

#c# #xamarin.forms #sentry

Вопрос:

Я пытаюсь добавить контекст пользователя и устройства в SentrySdk с помощью c #, но эта информация никогда не отображается на портале sentry.

вот код

  SentrySdk.ConfigureScope(scope =>
                {
                    scope.SetTag("SStGAppAId", sstgAppId);
                    scope.User = new User
                    {
                        Id = sstgAppId
                    };
                    scope.Contexts.Device.Model= DeviceInfo.Model;
                    scope.Contexts.Device.Manufacturer = DeviceInfo.Manufacturer;
                    scope.Contexts.Device.Name = DeviceInfo.Name;
                    scope.Contexts.Device.Simulator = DeviceInfo.DeviceType != DeviceType.Physical;                    
                });
 

это то, что показывает sentry
введите описание изображения здесь

Что не делается для отправки информации о контексте в sentry?

Комментарии:

1. Проблема в том, что поток AsyncLocal может быть нечетным в Xamarin. Попробуйте установить datqa в статическом конструкторе приложения (также инициализируйте SDK там). Но, как правило, это то, что SDK нуждается в улучшении. Здесь есть проблема: github.com/getsentry/sentry-dotnet/issues/628

Ответ №1:

Мы решили «Глобальный режим» в версии 3.8.1.

Это делает так, что любой вызов SentrySdk.SetTag или AddBreadcrumb или что-либо еще, что вы выполняете, SentrySdk.ConfigureScope изменяет один статический Scope объект, который влияет на все потоки приложения. Это полезно для настольных и мобильных приложений, когда у вас есть сеанс с одним пользователем, и вы добавляете контекст в Sentry в любом месте приложения и хотите, чтобы он был включен, если произойдет сбой в любом другом потоке.

Вы можете перейти в этот режим с помощью:

options.IsGlobalModeEnabled = true

Этот параметр будет установлен по умолчанию Sentry.Xamarin и Sentry.Xamarin.Forms который вы могли бы использовать для получения дополнительной информации об устройстве и панировочных сухарей для системных событий.

Ответ №2:

Это ошибка в SDK, AsyncLocal проблема. На данный момент, чтобы обойти его, вы можете вызывать SentrySdk.ConfigureScope его каждый раз перед входом в систему.