#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?
Комментарии:
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
его каждый раз перед входом в систему.