public override Task OnActionExecutingAsync()

in SfB Trusted Application/LoggingContextActionFilter.cs [31:65]


        public override Task OnActionExecutingAsync(HttpActionContext actionContext, CancellationToken cancellationToken)
        {
            var actionDescriptor = actionContext.ActionDescriptor;
            var httpRequestMessage = actionContext.Request;

            var loggingContext = new LoggingContext(httpRequestMessage.GetCorrelationId());

            httpRequestMessage.Properties.Add(Constants.LoggingContext, loggingContext);
            if (!string.IsNullOrWhiteSpace(this.QueryParameterName))
            {
                var queryStringCollection = httpRequestMessage.RequestUri.ParseQueryString();
                CallbackContext callbackContext = null;
                var callbackContextString = queryStringCollection[this.QueryParameterName];
                if (!string.IsNullOrWhiteSpace(callbackContextString))
                {
                    try
                    {
                        callbackContext = JsonConvert.DeserializeObject<CallbackContext>(callbackContextString);
                    }
                    catch(Exception ex)
                    {
                        Logger.Instance.Error(ex, "[LoggingContextActionFilterAttribute] error in deserializing callback context!");
                    }

                    if (callbackContext != null)
                    {
                        httpRequestMessage.Properties.Add(Constants.CallbackContext, callbackContext);
                        loggingContext.FillFromCallbackContext(callbackContext);
                    }
                }

                loggingContext.FillTracingInfoFromHeaders(httpRequestMessage.Headers, true);
            }
            return Task.FromResult<string>(string.Empty);
        }