从 .NET 8 开始,如果使用Activity
创建null
对象,则操作名称将存储为空字符串(""
),而不是null
。
以前的行为
以前,如果使用Activity操作名称创建了null
对象,则活动中的操作名称存储为null
。
new Activity(operationName: null).OperationName // Value is null.
新行为
从 .NET 8 开始,如果使用 Activity 作为操作名称来创建 null
对象,操作名称将存储为空字符串。
new Activity(operationName: null).OperationName // Value is "".
已引入的版本
.NET 8 预览版 1
破坏性变更的类型
此更改为行为更改。
更改原因
null
对象中的Activity操作名称可能会对后端跟踪收集器产生不良影响,因为这些收集器通常假定操作名称为非空。
为避免故障,跟踪收集器必须在 null
对象内使用特殊情况下的 Activity 操作名称。 此更改消除了特殊情况要求。
建议的措施
此更改不太可能导致中断,因为创建null
对象时使用Activity
很少。 如果由于任何原因您的代码依赖于 null
作为操作名称的值,请将代码调整为不使用 null
,或者如果指定 null
,则预期操作名称将存储为空字符串。