/// <inheritdoc/>
        protected override void OnRequestFailure(RequestFailureDiagnosticData data)
        {
            if (data is null)
            {
                return;
            }

            if (_operationBuilders.TryGetValue(data.Operation, out var builder))
            {
                builder.Outdent();
                builder.AppendLine(TracerMessages.ExitBrace);
                var requestException = data.RequestException;

                if (requestException is DependencyResolutionException && requestException.InnerException is object)
                {
                    requestException = requestException.InnerException;
                }

                if (requestException.Data.Contains(RequestExceptionTraced))
                {
                    builder.AppendLine(TracerMessages.ResolveRequestFailedNested);
                }
                else
                {
                    builder.AppendException(TracerMessages.ResolveRequestFailed, requestException);
                }

                requestException.Data[RequestExceptionTraced] = true;
            }
        }
Exemple #2
0
 /// <summary>
 /// Handles the event raised when a resolve request encounters an error.
 /// </summary>
 /// <param name="data">
 /// Diagnostic data associated with the event.
 /// </param>
 /// <remarks>
 /// <para>
 /// Derived classes can override this method and perform actions based
 /// on the event. By default, the base class does nothing.
 /// </para>
 /// </remarks>
 protected virtual void OnRequestFailure(RequestFailureDiagnosticData data)
 {
 }