在 .NET core 3.1 中的 opentelemetry 跟踪中添加自定义属性

问题描述 投票:0回答:1

我正在寻找在 opentelemetry 的痕迹中添加自定义属性。我想添加会话值(例如唯一 ID)作为自定义属性以跟踪每个用户的每个痕迹。但是在启动时我无法访问会话。最后我的问题是 为什么我无法在启动中访问会话? 如果无法访问意味着如何实现上面在 opentelemetry 中以粗体字母提到的要求?

c# asp.net-core session instrumentation open-telemetry
1个回答
0
投票

在 ASP.NET Core 中,

Startup
类配置服务和应用程序的请求管道。该会话在
Startup
中无法访问,因为此时尚未设置它。会话通常在请求管道运行后建立,这是在
Startup
配置完成之后。

会话状态是在 HTTP 请求的上下文中建立的。在启动配置期间,应用程序正在设置它将如何处理请求,但尚未发出任何请求。

但是,要将唯一用户标识符等自定义属性添加到 OpenTelemetry 跟踪中,您可以按照以下步骤操作:

1)创建一个在会话建立后运行的自定义中间件。在此中间件中,您可以访问会话值并设置自定义属性。

2) 使用可以访问

HttpContext
以及会话状态的遥测初始化程序,以通过会话信息丰富遥测。

3)如果您使用 MVC,您还可以使用操作过滤器将会话信息添加到遥测中。这将在会话数据可用的操作执行上下文中完成。

您可以参考此文档,它将帮助您了解如何管理会话状态:

https://learn.microsoft.com/en-us/aspnet/core/fundamentals/app-state?view=aspnetcore-7.0

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.