Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
API-интерфейсы ActivitySource.CreateActivity и ActivitySource.StartActivity возвращают Activity только в том случае, если есть зарегистрированный слушатель, который решает, что экземпляр должен быть создан. Это обычно называется выборкой.
Перечисление System.Diagnostics.ActivitySamplingResult определяет возможные решения по выборке.
При создании Activity без родителя ActivitySamplingResult определяет, создается ли Activity, а затем устанавливаются свойства Recorded и IsAllDataRequested:
| РезультатВыборочногоДействия | Активность создана | Деятельность.Записано | Деятельность.ЗапрошеныВсеДанные |
|---|---|---|---|
| Никакой | Нет | ||
| Распространение данных | Да | Ложный | Ложный |
| AllData | Да | Ложный | Правда |
| ВсеДанныеИЗаписи | Да | Правда | Правда |
Также возможно создать элемент Activity, у которого есть родитель. Родительский элемент может находиться в том же процессе или может быть удаленным родительским элементом, переданным в текущий процесс.
Предыдущее поведение
Ранее при создании Activity как PropagationData с родительским элементом, помеченным как Recorded, свойства Recorded и IsAllDataRequested были заданы следующим образом:
| РезультатВыборочногоДействия | Активность создана | Деятельность.Записано | Деятельность.ЗапрошеныВсеДанные |
|---|---|---|---|
| Распространение данных | Да | Правда | Ложный |
Новое поведение
Начиная с .NET 10 при создании Activity как PropagationData с родительским элементом, помеченным как Recorded, свойства Recorded и IsAllDataRequested задаются следующим образом:
| РезультатВыборочногоДействия | Активность создана | Деятельность.Записано | Деятельность.ЗапрошеныВсеДанные |
|---|---|---|---|
| Распространение данных | Да | Ложный | Ложный |
Представленная версия
.NET 10
Тип ломающего изменения
Это изменение является изменения поведения.
Причина изменения
Предыдущее поведение не соответствовало спецификации OpenTelemetry.
Рекомендуемое действие
Если вы реализовали ActivityListener.Sample напрямую и используете ActivitySamplingResult.PropagationData, убедитесь, что вы не зависите от ошибочного поведения. Чтобы восстановить предыдущее поведение, можно задать Activity.ActivityTraceFlags на Recorded после вызова CreateActivity или StartActivity.
Если вы используете OpenTelemetry .NET и настроили самплер, проверьте конфигурацию самплера. Конфигурация OpenTelemetry .NET по умолчанию использует родительский алгоритм, на который ничего не оказывает влияние.