public override Task ExecuteBindingAsync(ModelMetadataProvider metadataProvider, HttpActionContext actionContext, CancellationToken cancellationToken) { return(_traceWriter.TraceBeginEndAsync( actionContext.Request, TraceCategories.ModelBindingCategory, TraceLevel.Info, _innerBinding.GetType().Name, ExecuteBindingAsyncMethodName, beginTrace: (tr) => { tr.Message = Error.Format(SRResources.TraceBeginParameterBind, _innerBinding.Descriptor.ParameterName); }, execute: () => _innerBinding.ExecuteBindingAsync(metadataProvider, actionContext, cancellationToken), endTrace: (tr) => { string parameterName = _innerBinding.Descriptor.ParameterName; tr.Message = actionContext.ActionArguments.ContainsKey(parameterName) ? Error.Format(SRResources.TraceEndParameterBind, parameterName, FormattingUtilities.ValueToString(actionContext.ActionArguments[parameterName], CultureInfo.CurrentCulture)) : Error.Format(SRResources.TraceEndParameterBindNoBind, parameterName); }, errorTrace: null)); }