示例#1
0
        public override async void OnSuccess(MethodExecutionArgs args)
        {
            var context = (TraceAttributeContext)args.MethodExecutionTag;

            context.Stopwatch.Stop();

            PopParentMethodId();

            var httpResponse = args.ReturnValue as HttpResponseMessage;

            if (httpResponse != null)
            {
                var httpBoundaryResponseMessage = new TraceHttpBoundaryResponseMessage
                {
                    TraceId        = context.TraceId,
                    MethodId       = context.MethodId,
                    Timestamp      = DateTime.Now,
                    Headers        = httpResponse.Headers.GetHeaders(),
                    Content        = (httpResponse.Content != null) ? await httpResponse.Content.ReadAsStringAsync() : "",
                    HttpStatusCode = httpResponse.StatusCode,
                };

                httpBoundaryResponseMessage.Broadcast();
            }

            var message = new TraceMessage
            {
                TraceId                 = context.TraceId,
                MethodId                = context.MethodId,
                ParentMethodId          = context.ParentMethodId,
                TraceEvent              = TraceEvent.OnMethodSuccess,
                Timestamp               = DateTime.Now,
                MethodName              = _methodName,
                ReturnValue             = (args.ReturnValue != null) ? args.ReturnValue.ToString() : string.Empty,
                TimeTakenInMilliseconds = context.Stopwatch.ElapsedMilliseconds
            };

            message.Broadcast();
        }
示例#2
0
文件: TraceHub.cs 项目: csuzw/Tracer
 public void SendHttpBoundaryResponse(TraceHttpBoundaryResponseMessage message)
 {
     Clients.All.broadcastHttpResponseMessage(message);
 }
示例#3
0
 public void Broadcast(TraceHttpBoundaryResponseMessage message)
 {
     Broadcast(message, "traceHub", "SendHttpBoundaryResponse");
 }
示例#4
0
 public static void Broadcast(this TraceHttpBoundaryResponseMessage message)
 {
     SignalRClient.Instance.Broadcast(message);
 }