计时器触发的 Azure 函数 Activity.Current 为空
Timer triggered Azure function Activity.Current is null
场景
我已遵循此 tutorial 并在 net core 3.1
中创建了 azure function v3
来监视我的 Web 应用程序。你使用 Visual Studio 而不是在门户中开发它。
问题
不幸的是我收到了 System.NullReferenceException: Object reference not set to an instance of an object.System.Diagnostics.Activity.Current.get returned null.
行:
availability.Context.Operation.ParentId = Activity.Current.SpanId.ToString();
如何解决?
嗯...我觉得教程可能在代码上有一些错误,我们可以注释掉发生错误的两行。
这个doc说:
Activities should be created by calling the constructor, configured as
necessary, and then started with the Start method, which maintains
parent-child relationships for the activities and sets
Activity.Current.
这就是 availability.Context.Operation.ParentId = Activity.Current.SpanId.ToString();
出现错误的原因。并专注于这一行代码,
这条线有意义吗?所以在我的测试中,我把这一行和它后面的行都注释掉了,代码执行的很好。
我按照相同的教程使用 Azure Function 设置可用性测试。
首先删除这两行即可解决错误,功能正常
availability.Context.Operation.ParentId = Activity.Current.SpanId.ToString();
availability.Context.Operation.Id = Activity.Current.RootId;
但这样一来,用 availability.Id = Activity.Current.SpanId.ToString();
发送到 application insight 日志的 availability.Id 将始终是 0000000000000
。如果您不关心为每个可用性测试提供唯一 ID,那很好。
如果需要,您可以在
availability.Message
json 格式。
场景
我已遵循此 tutorial 并在 net core 3.1
中创建了 azure function v3
来监视我的 Web 应用程序。你使用 Visual Studio 而不是在门户中开发它。
问题
不幸的是我收到了 System.NullReferenceException: Object reference not set to an instance of an object.System.Diagnostics.Activity.Current.get returned null.
行:
availability.Context.Operation.ParentId = Activity.Current.SpanId.ToString();
如何解决?
嗯...我觉得教程可能在代码上有一些错误,我们可以注释掉发生错误的两行。
这个doc说:
Activities should be created by calling the constructor, configured as necessary, and then started with the Start method, which maintains parent-child relationships for the activities and sets Activity.Current.
这就是 availability.Context.Operation.ParentId = Activity.Current.SpanId.ToString();
出现错误的原因。并专注于这一行代码,
这条线有意义吗?所以在我的测试中,我把这一行和它后面的行都注释掉了,代码执行的很好。
我按照相同的教程使用 Azure Function 设置可用性测试。
首先删除这两行即可解决错误,功能正常
availability.Context.Operation.ParentId = Activity.Current.SpanId.ToString();
availability.Context.Operation.Id = Activity.Current.RootId;
但这样一来,用 availability.Id = Activity.Current.SpanId.ToString();
发送到 application insight 日志的 availability.Id 将始终是 0000000000000
。如果您不关心为每个可用性测试提供唯一 ID,那很好。
如果需要,您可以在
availability.Message
json 格式。