示例#1
0
        private async Task <TelemetrySpan> PreBefore(CapHeader header)
        {
            if (!header.ContainsKey(CurrentDeviceId))
            {
                throw new Exception("currentDeviceId不可为空");
            }

            _dbContextFactory.IsTransaction = true;

            var deviceId  = Convert.ToInt32(header[CurrentDeviceId]);
            var deviceDto = await _deviceService.GetDeviceById_Pref(deviceId);

            _current.Device = deviceDto;

            var tracer      = _tracerFactory.GetTracer(header[CapMsgName]);
            var traceId     = header.ContainsKey(TraceId) ? header[TraceId] : CommonHelper.NewSequentialGuid().ToString();
            var spanId      = tracer.CurrentSpan.Context.SpanId;
            var spanContext = new SpanContext(
                ActivityTraceId.CreateFromString(traceId),
                spanId, //  ActivitySpanId.CreateFromString(""),
                ActivityTraceFlags.None);

            return(tracer.StartSpan(header[CapMsgName], spanContext, SpanKind.Server));
        }