在不同层的应用程序洞察中跟踪遥测

时间:2016-10-25 21:13:33

标签: azure-application-insights

我目前正在使用App洞察来记录异常和跟踪。 我的项目是基于Asp.net MVC,我有3个不同的层。一个是前端(带有角度的MVC),其余两个是Web API服务层。 我已经为所有3层启用了默认遥测记录,并且记录了所有操作。我的问题是我无法关联所有3层的操作。我怎样才能做到这一点。我已经读过一个选项是在Telemetry Initializer上设置自定义属性(会话中的userID),但是我的Web API层上没有这些信息,因为它们是无状态的。

2 个答案:

答案 0 :(得分:1)

我能想到的一个解决方案:

您可以为MVC层中的每个操作生成内部标识符(例如GUID),将其添加为自定义参数(使用遥测初始化程序),并将相同的ID传递给Web API图层,以用于您进行的每个API调用。对于这些Web API层发送的每个遥测事件,以与上述相同的方式将标识符添加为自定义参数。

通过这种方式,您可以根据内部ID关联事件。

答案 1 :(得分:1)

除了已经提到的替代方案之外,通过ParentOperationId和OperationId上下文字段已经将partial support内置到AI中。但是,现在没有任何东西可以自动通过Http调用传播字段。

应该可以让您的代码在进行传出HTTP调用时添加必要的标头,如果您使用正确的标头,而另一侧有必要的遥测初始化器,则应该更好。