HttpContext and TelemetryInitializer

后端 未结 3 597
余生分开走
余生分开走 2020-12-06 18:20

I want to attach the user\'s \"client_id\" claim as a property to every request sent to Application Insights.

From what I\'ve read, I should be implementing IT

3条回答
  •  抹茶落季
    2020-12-06 19:13

    I would suggest to inject an HttpContextAccessor instance in the ClaimTelemetryInitializer class's constructor, and then you could use it to extract values from the HttpContext. Or, even better, create a base class for your TelemetryInitializer, and use it's constructor to inject the HttpContextAccessor instance.

    For example:

        protected ClaimTelemetryInitializer(IHttpContextAccessor httpContextAccessor)
        {
            this.httpContextAccessor = httpContextAccessor;
        }
    
        public void Initialize(ITelemetry telemetry)
        {
            var context = this.httpContextAccessor.HttpContext;
            if (context == null)
            {
                return;
            }
    
            var claim = context.User.Claims.SingleOrDefault(x => x.Type.Equals(claimName, StringComparison.InvariantCultureIgnoreCase));
            //Do logic here...
        }
    

提交回复
热议问题