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);
}