如何使用httpcontext

问题描述

我有兴趣在asp.net核心网络api中设置X射线“跟踪” UserID(基于HttpContext User.Claims中包含的经过身份验证的用户声明) 对我来说,如果OAuth令牌具有某些声明(例如包含有关api客户端的身份信息的声明),那么X射线跟踪具有的某些属性也将包含在声明中(用户电子邮件,甚至是自定义声明),这是有道理的>

为了手动设置此值,我需要在AWS XRay SDK上调用哪种方法

AWSXRayRecorder实例上是否有方法

我已经尝试了以下方法,但这似乎不是解决方案,而只是一个微不足道的尝试或有根据的猜测。

            AWSXRayRecorder recorder = AWSXRayRecorder.Instance;
            recorder.AddAnnotation("UserID","123");
            recorder.AddAnnotation("User","456");

sdk如何允许这种类型的控制?是否允许这种类型的控件,以便我们可以设置UserID的值?

在这里您可以在“分析”标签中看到“未设置用户”(显示“-”)

enter image description here

我知道我可以以类似的方式使用注释,但是我要特别问的是上面的用户界面上显示内容,即“用户

我也尝试了以下方法,但是,这似乎对我在分析中看到的内容没有任何影响

    var segment1 = (Segment)AWSXRayRecorder.Instance.GetEntity();
    var segment2 = (Segment)AWSXRayRecorder.Instance.TraceContext.GetEntity();
    segment1.SetUser("User1");
    segment2.SetUser("User2");

解决方法

我认为当前您可以使用AddAnnotation或AddMetadata方法在跟踪数据中设置诸如userID或user之类的值。您能否解释为什么AddAnnotation方法不适用于您的用例?除了AddAnnotation和AddMetadata方法外,我认为X-Ray SDK不支持其他任何API来设置此类值。