繁体   English   中英

计时器触发 Azure function 活动。当前为 null

[英]Timer triggered Azure function Activity.Current is null

设想

我按照本教程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();

如何解决?

嗯...我认为教程可能在代码上有一些错误,我们可以注释发生错误的两行。

这个文档说:

活动应通过调用构造函数创建,根据需要进行配置,然后使用 Start 方法启动,该方法维护活动的父子关系并设置 Activity.Current。

这就是为什么availability.Context.Operation.ParentId = Activity.Current.SpanId.ToString(); 突发错误。 并关注这一行代码,这一行有意义吗? 所以在我的测试中,我对这一行和它后面的行进行了注释,并且代码执行得很好。

在此处输入图像描述 在此处输入图像描述

我按照相同的教程使用 Azure Function 设置了可用性测试。

首先,删除这两行将解决错误,function 将起作用

availability.Context.Operation.ParentId = Activity.Current.SpanId.ToString(); 
availability.Context.Operation.Id = Activity.Current.RootId;

但是这样的话,with availability.Id = Activity.Current.SpanId.ToString(); 发送到 Application Insight 日志的 availability.Id 将始终为0000000000000 如果您不关心为每个可用性测试提供一个唯一的 ID,那很好。

如果需要,您可以在availability.Message中添加自定义 ID 或标识符,格式为 json。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM