示例#1
0
        void IWcfTelemetryModule.OnBeginRequest(IOperationContext operation)
        {
            if (operation == null)
            {
                throw new ArgumentNullException("operation");
            }
            if (telemetryClient == null)
            {
                return;
            }

            RequestTelemetry telemetry = operation.Request;

            telemetry.Start();

            telemetry.Url  = operation.EndpointUri;
            telemetry.Name = operation.OperationName;

            var httpHeaders = operation.GetHttpRequestHeaders();

            if (httpHeaders != null)
            {
                telemetry.HttpMethod = httpHeaders.Method;
                if (operation.ToHeader != null)
                {
                    // overwrite it for WebHttpBinding requests
                    telemetry.Url = operation.ToHeader;
                }
            }
        }
        private void UpdateUserAgent(IOperationContext operation, UserContext userContext)
        {
            var    contextState = (IOperationContextState)operation;
            String knownAgent   = null;

            if (contextState.TryGetState(UserAgent, out knownAgent))
            {
                userContext.Id = knownAgent;
                return;
            }

            var httpHeaders = operation.GetHttpRequestHeaders();

            if (httpHeaders != null)
            {
                var userAgent = httpHeaders.Headers["User-Agent"];
                if (!String.IsNullOrEmpty(userAgent))
                {
                    userContext.UserAgent = userAgent;
                }
            }
            // we store this here (even if it's null), to avoid
            // having to check the message headers later on
            // when it might no longer be available.
            contextState.SetState(UserAgent, userContext.UserAgent ?? "");
        }
 /// <summary>
 /// Called when a telemetry item is available
 /// </summary>
 /// <param name="telemetry">The telemetry item to augment</param>
 /// <param name="operation">The operation context</param>
 protected override void OnInitialize(ITelemetry telemetry, IOperationContext operation)
 {
     var httpHeaders = operation.GetHttpRequestHeaders();
     if ( httpHeaders != null )
     {
         var userAgent = httpHeaders.Headers["User-Agent"];
         if ( !String.IsNullOrEmpty(userAgent) )
         {
             telemetry.Context.User.UserAgent = userAgent;
         }
     }
 }
示例#4
0
        /// <summary>
        /// Called when a telemetry item is available
        /// </summary>
        /// <param name="telemetry">The telemetry item to augment</param>
        /// <param name="operation">The operation context</param>
        protected override void OnInitialize(ITelemetry telemetry, IOperationContext operation)
        {
            var httpHeaders = operation.GetHttpRequestHeaders();

            if (httpHeaders != null)
            {
                var userAgent = httpHeaders.Headers["User-Agent"];
                if (!String.IsNullOrEmpty(userAgent))
                {
                    telemetry.Context.User.UserAgent = userAgent;
                }
            }
        }
示例#5
0
        private void UpdateUserAgent(IOperationContext operation, UserContext userContext)
        {
            var httpHeaders = operation.GetHttpRequestHeaders();

            if (httpHeaders != null)
            {
                var userAgent = httpHeaders.Headers["User-Agent"];
                if (!String.IsNullOrEmpty(userAgent))
                {
                    userContext.UserAgent = userAgent;
                }
            }
        }
        private String GetHeader(IOperationContext context, String httpHeader, String soapHeader)
        {
            var httpHeaders = context.GetHttpRequestHeaders();

            if (httpHeaders != null)
            {
                return(httpHeaders.Headers[httpHeader]);
            }
            else
            {
                return(context.GetIncomingMessageHeader <String>(soapHeader, SoapHeaderNamespace));
            }
        }
示例#7
0
        private string GetHeader(IOperationContext context, string httpHeader, string soapHeader)
        {
            if (this.RequestAlreadyChecked(context))
            {
                return(null);
            }

            var httpHeaders = context.GetHttpRequestHeaders();

            if (httpHeaders != null)
            {
                return(httpHeaders.Headers[httpHeader]);
            }
            else
            {
                return(context.GetIncomingMessageHeader <string>(soapHeader, this.SoapHeaderNamespace));
            }
        }
示例#8
0
        void IWcfTelemetryModule.OnBeginRequest(IOperationContext operation)
        {
            if (operation == null)
            {
                throw new ArgumentNullException("operation");
            }

            if (this.telemetryClient == null)
            {
                return;
            }

            RequestTelemetry telemetry = operation.Request;

            // if ASP.NET has already started the request, leave the start time alone.
            if (operation.OwnsRequest)
            {
                telemetry.Start();
            }

            telemetry.Url  = operation.EndpointUri;
            telemetry.Name = operation.OperationName;
            telemetry.Properties["soapAction"] = operation.SoapAction;

            var httpHeaders = operation.GetHttpRequestHeaders();

            if (httpHeaders != null)
            {
                telemetry.Properties["httpMethod"] = httpHeaders.Method;
                if (operation.ToHeader != null)
                {
                    // overwrite it for WebHttpBinding requests
                    telemetry.Url = operation.ToHeader;
                }
            }

            // run telemetry initializers here, while the request message is still open
            this.telemetryClient.Initialize(telemetry);
        }