Freigeben über


Verhaltensänderung von ActivitySource.CreateActivity und ActivitySource.StartActivity

Die ActivitySource.CreateActivity- und ActivitySource.StartActivity-APIs geben nur eine Activity zurück, wenn ein registrierter Listener vorhanden ist, der entscheidet, dass die Instanz erstellt werden soll. Dies wird allgemein als Sampling bezeichnet.

Die möglichen Samplingentscheidungen werden durch die System.Diagnostics.ActivitySamplingResult-Enumeration definiert.

Beim Erstellen eines Activity ohne übergeordnetes Element steuert ActivitySamplingResult, ob das Activity erstellt wird und wie die Eigenschaften Recorded und IsAllDataRequested festgelegt werden:

Aktivitätsstichprobenergebnis Aktivität erstellt Activity.Recorded Activity.IsAllDataRequested
Nichts Nein
Ausbreitungsdaten Ja falsch falsch
AllData Ja falsch Stimmt
AllDataAndRecorded Ja Stimmt Stimmt

Es ist auch möglich, ein Activity Element mit einem übergeordneten Element zu erstellen. Das übergeordnete Element kann sich im selben Prozess befinden, oder es kann sich um ein übergeordnetes Remoteelement handeln, das an den aktuellen Prozess propagiert wird.

Vorheriges Verhalten

Beim Erstellen einer Activity als PropagationData mit einem übergeordneten Element, das als Recorded gekennzeichnet ist, wurden die Eigenschaften Recorded und IsAllDataRequested wie folgt festgelegt:

Aktivitätsstichprobenergebnis Aktivität erstellt Activity.Recorded Activity.IsAllDataRequested
Ausbreitungsdaten Ja Stimmt falsch

Neues Verhalten

Ab .NET 10 werden beim Erstellen einer Activity als PropagationData mit einem übergeordneten Element, das als Recorded gekennzeichnet ist, die Eigenschaften Recorded und IsAllDataRequested wie folgt festgelegt:

Aktivitätsstichprobenergebnis Aktivität erstellt Activity.Recorded Activity.IsAllDataRequested
Ausbreitungsdaten Ja falsch falsch

Eingeführt in Version

.NET 10

Typ des Breaking Changes

Diese Änderung ist eine Verhaltensänderung.

Grund für Änderung

Das vorherige Verhalten hat die OpenTelemetry-Spezifikation nicht befolgt.

Wenn Sie ActivityListener.Sample direkt implementiert UND ActivitySamplingResult.PropagationDataverwenden, vergewissern Sie sich, dass Sie nicht auf das fehlerhafte Verhalten angewiesen sind. Um das vorherige Verhalten wiederherzustellen, können Sie Activity.ActivityTraceFlags nach dem aufruf Recorded oder CreateActivity auf StartActivity festlegen.

Wenn Sie OpenTelemetry .NET verwenden und den Sampler angepasst haben, überprüfen Sie die Samplerkonfiguration. Die standardmäßige OpenTelemetry .NET-Konfiguration verwendet einen übergeordneten Algorithmus, der nicht beeinträchtigt wird.

Betroffene APIs