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)); }