活动 (Activity.DefaultIdFormat) 的默认标识符格式现在是 ActivityIdFormat.W3C。
更改描述
W3C 活动 ID 格式是在 .NET Core 3.0 中引入的,这是分层 ID 格式的替代方法。 但是,为了保持兼容性,W3C 格式在 .NET 5 之前未设为默认值。 默认值在 .NET 5 中发生了更改,因为 W3C 格式已得到批准 ,并获得了跨多种语言实现的牵引力。
如果应用面向 .NET 5 或更高版本以外的平台,它将体验旧行为,即 Hierarchical 默认格式。 此默认值适用于平台 net45+、netstandard1.1+和 netcoreapp(1.x、2.x 和 3.x)。 在 .NET 5 及更高版本中, Activity.DefaultIdFormat 设置为 ActivityIdFormat.W3C.
已引入的版本
5.0
建议的措施
如果您的应用程序无需考虑用于分布式跟踪的标识符,则无需执行任何操作。 像 ASP.NET Core 和 HttpClient 这样的库可以使用或传播 ActivityIdFormat 的两个版本。
如果需要与现有系统实现互操作性,或者当前系统依赖于标识符的格式,可以通过将DefaultIdFormat设置为ActivityIdFormat.Hierarchical来保留旧行为。 或者,可以通过以下三种方式之一设置 AppContext 开关:
在项目文件中。
<ItemGroup> <RuntimeHostConfigurationOption Include="System.Diagnostics.DefaultActivityIdFormatIsHierarchial" Value="true" /> </ItemGroup>在 runtimeconfig.json 文件中。
{ "runtimeOptions": { "configProperties": { "System.Diagnostics.DefaultActivityIdFormatIsHierarchial": true } } }通过环境变量。
将
DOTNET_SYSTEM_DIAGNOSTICS_DEFAULTACTIVITYIDFORMATISHIERARCHIAL设置为true或 1。