コード例 #1
0
        private static void GlobalActivityLogger(object sender, ActivityEventArgs args)
        {
            IActivityScope activityScope = sender as IActivityScope;

            if (activityScope.ActivityType == ActivityType.Global && (args.ActivityEventType == ActivityEventType.EndActivity || args.ActivityEventType == ActivityEventType.SuspendActivity))
            {
                RequestDetailsLoggerBase <T> requestDetailsLoggerBase = RequestDetailsLoggerBase <T> .InitializeRequestLogger(activityScope);

                ServiceCommonMetadataPublisher.PublishServerInfo(requestDetailsLoggerBase.ActivityScope);
                requestDetailsLoggerBase.Commit();
            }
        }
コード例 #2
0
        public static void PublishMetadata(HttpContext context)
        {
            if (!ServiceCommonMetadataPublisher.isServiceCommonMetadataRegistered)
            {
                ActivityContext.RegisterMetadata(typeof(ServiceCommonMetadata));
                ServiceCommonMetadataPublisher.isServiceCommonMetadataRegistered = true;
            }
            HttpContextBase context2 = (context != null) ? new HttpContextWrapper(context) : null;

            ServiceCommonMetadataPublisher.PublishGeneric(context2);
            ServiceCommonMetadataPublisher.PublishAuthData(context2);
        }
コード例 #3
0
        private static void PublishAuthData(HttpContextBase context)
        {
            if (context == null)
            {
                return;
            }
            IActivityScope currentActivityScope = ServiceCommonMetadataPublisher.GetCurrentActivityScope(context);

            if (currentActivityScope == null)
            {
                return;
            }
            Dictionary <Enum, string> authValues = context.GetAuthValues();

            foreach (KeyValuePair <Enum, string> keyValuePair in authValues)
            {
                currentActivityScope.SetProperty(keyValuePair.Key, keyValuePair.Value);
            }
        }
コード例 #4
0
        private static void PublishGeneric(HttpContextBase context)
        {
            IActivityScope currentActivityScope = ServiceCommonMetadataPublisher.GetCurrentActivityScope(context);

            if (currentActivityScope == null)
            {
                return;
            }
            ServiceCommonMetadataPublisher.PublishServerInfo(currentActivityScope);
            if (context == null)
            {
                return;
            }
            HttpRequestBase  request  = context.Request;
            HttpResponseBase response = context.Response;
            string           value    = request.GetRequestHeader("X-Forwarded-For");

            if (string.IsNullOrEmpty(value))
            {
                value = request.UserHostAddress;
            }
            currentActivityScope.SetProperty(ServiceCommonMetadata.ClientIpAddress, value);
            currentActivityScope.SetProperty(ActivityStandardMetadata.ClientInfo, request.UserAgent);
            currentActivityScope.SetProperty(ServiceCommonMetadata.RequestSize, request.ContentLength.ToString());
            if (currentActivityScope.GetProperty(ServiceCommonMetadata.HttpStatus) == null)
            {
                currentActivityScope.SetProperty(ServiceCommonMetadata.HttpStatus, response.StatusCode.ToString());
            }
            if (request.Cookies.Count > 0)
            {
                for (int i = 0; i < request.Cookies.Count; i++)
                {
                    if (string.Equals(request.Cookies[i].Name, "exchangecookie", StringComparison.OrdinalIgnoreCase))
                    {
                        currentActivityScope.SetProperty(ServiceCommonMetadata.Cookie, request.Cookies[i].Value);
                        return;
                    }
                }
            }
        }
コード例 #5
0
 public static void PublishMetadata()
 {
     ServiceCommonMetadataPublisher.PublishMetadata(HttpContext.Current);
 }