示例#1
0
        /// <summary>
        /// Adds the current request info as extended data to the event.
        /// </summary>
        /// <param name="ev">The event model.</param>
        /// <param name="context">The http action context to gather information from.</param>
        public static Event AddHttpRequestInfo(this Event ev, HttpActionContext context)
        {
            if (context == null)
            {
                return(ev);
            }

            ev.AddRequestInfo(context.GetRequestInfo(ExceptionlessClient.Default.Configuration));

            return(ev);
        }
        public void Enrich(EventEnrichmentContext context, Event ev)
        {
            if (!context.Data.ContainsKey("HttpActionContext"))
            {
                return;
            }

            HttpActionContext actionContext = context.Data.GetHttpActionContext();

            if (actionContext == null)
            {
                return;
            }

            IPrincipal principal = GetPrincipal(actionContext.Request);

            if (context.Client.Configuration.IncludePrivateInformation && principal != null && principal.Identity.IsAuthenticated)
            {
                ev.SetUserIdentity(principal.Identity.Name);
            }


            RequestInfo requestInfo = null;

            try {
                requestInfo = actionContext.GetRequestInfo(context.Client.Configuration);
            } catch (Exception ex) {
                context.Log.Error(typeof(ExceptionlessWebApiEnrichment), ex, "Error adding request info.");
            }

            if (requestInfo == null)
            {
                return;
            }

            var error = ev.GetError();

            if (error != null && error.Code == "404")
            {
                ev.Type   = Event.KnownTypes.NotFound;
                ev.Source = requestInfo.GetFullPath(includeHttpMethod: true, includeHost: false, includeQueryString: false);
                ev.Data.Clear();
            }

            ev.AddRequestInfo(requestInfo);
        }