Esempio n. 1
0
        /// <summary>
        /// Collects the tracking information.
        /// </summary>
        public void CollectTrackingInfo(long bodyLength)
        {
            if (Settings != null && Settings.ApiTracking != null && Settings.TrackingEvent && RuntimeContext != null && !RuntimeContext.OmitApiEvent)
            {
                ApiEvent = new ApiEventLog
                {
                    RawUrl     = RawUrl,
                    EntryStamp = EntryStamp,
                    TraceId    = TraceId,
                    // If request came from ApiTransport or other proxy ways, ORIGINAL stands for the IP ADDRESS from original requester.
                    IpAddress          = TryGetRequestHeader(Settings?.OriginalIpAddressHeaderKey.SafeToString(HttpConstants.HttpHeader.ORIGINAL)).SafeToString(ClientIpAddress),
                    CultureCode        = UserLanguages.SafeFirstOrDefault(),
                    ContentLength      = bodyLength,
                    OperatorCredential = ContextHelper.CurrentCredential as BaseCredential,
                    ServiceIdentifier  = RuntimeContext.ApiInstance?.GetType()?.Name,
                    ServerIdentifier   = EnvironmentCore.MachineName
                };

                var clientIdentifierHeaderKey = Settings.ClientIdentifierHeaderKey;
                if (!string.IsNullOrWhiteSpace(clientIdentifierHeaderKey))
                {
                    ApiEvent.ClientIdentifier = TryGetRequestHeader(clientIdentifierHeaderKey);
                }
            }

            if (!string.IsNullOrWhiteSpace(TraceId))
            {
                ApiTraceContext.Initialize(TraceId, TraceSequence, EntryStamp);
            }
        }