是否可以针对特定方法/功能禁用Application Insights依赖关系跟踪?
我的具体问题是我有一个自定义ITelemetryInitializer,并且在其中,我正在调用一个静态函数,如果该值尚未缓存在内存中,则该函数可以具有外部依赖性。在该函数中,它正在创建一个新的ITelemetry并调用我的ITelemetryInitializer,它会生成一个新的ITelemetry等,从而导致StackOverflowException。
基本上(这不是我的实际代码):
public void Initialize(ITelemetry telemetry)
{
var cached = GetCachedValue();
if(cached)
return cached;
else
{
var value = GetData(); // New Telemetry gets created here - since it's not cached yet, the new telemetry gets initialized and goes right back here.
SetCachedValue(value);
}
}
我正在重新设置我的初始化程序以不使用外部依赖项,但我认为这个问题仍然有效 - 如果我没有需要跟踪的具体事情,我可以禁用遥测事情(在我的例子中,我想关闭GetData
方法的跟踪)?
答案 0 :(得分:1)
可以使用ITelemetryProcessor(https://docs.microsoft.com/en-us/azure/application-insights/app-insights-api-filtering-sampling)禁用依赖关系跟踪。
但是这对你的情况没有帮助,因为无论如何都会首先调用ITelemetryInitializer。正确的解决方案不是从ITelemetryInitializer进行依赖调用。