Ejemplo n.º 1
0
        /// <summary>
        /// Creates a new <see cref="ContentResult"/> instance from the supplied message and <see cref="AzureResponseException"/> instance.
        /// </summary>
        /// <param name="message">Message to use in the result.</param>
        /// <param name="arex"><see cref="AzureResponseException"/> instance to use in the result.</param>
        /// <param name="logPrefix">Logging prefix to use.</param>
        /// <param name="log"><see cref="ILogger"/> instance to use.</param>
        /// <returns><see cref="ContentResult"/> instance.</returns>
        public static ContentResult CreateFaultObjectResult(string message, AzureResponseException arex, string logPrefix, ILogger log)
        {
            Argument.AssertNotNullOrEmpty(message, nameof(message));
            Argument.AssertNotNull(arex, nameof(arex));
            Argument.AssertNotNullOrEmpty(logPrefix, nameof(logPrefix));
            Argument.AssertNotNull(log, nameof(log));

            string errorMessage = $"{message}: {arex.Message}";

            log.LogError($"{logPrefix}{errorMessage}. Stack Trace: {arex.StackTrace}");

            JObject fault;

            // Check if the exception contains a Fault already
            if (arex.Fault != null)
            {
                // We already have a Fault message - just return this
                fault = arex.Fault;
            }
            else
            {
                fault = BuildFaultMessage(message, arex?.Response?.StatusCode.ToString(), arex?.Response?.Reason, arex?.Response?.RequestUri.ToString());
            }

            return(new ContentResult()
            {
                Content = fault.ToString(),
                ContentType = "application/json",
                StatusCode = 500
            });
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Sets custom response headers from headers in the supplied <see cref="AzureResponseException"/> instance.
        /// </summary>
        /// <param name="req"><see cref="HttpRequest"/> instance containing the response.</param>
        /// <param name="arex"><see cref="AzureResponseException"/> instance to get headers from.</param>
        public static void SetCustomResponseHeaders(HttpRequest req, AzureResponseException arex)
        {
            Argument.AssertNotNull(req, nameof(req));
            Argument.AssertNotNull(arex, nameof(arex));

            // Set AIM TracingUrl header
            if (arex.Response != null && arex.Response.Headers.ContainsKey(HeaderConstants.AimTracingUrl))
            {
                req?.HttpContext?.Response?.Headers?.Add(HeaderConstants.AimTracingUrl, arex.Response.Headers[HeaderConstants.AimTracingUrl]);
            }
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Builds a new <see cref="JObject"/> instance representing a fault.
        /// </summary>
        /// <param name="arex"><see cref="AzureResponseException"/> instance containing details about an error.</param>
        /// <returns><see cref="JObject"/> instance representing a fault.</returns>
        public static JObject BuildFaultMessage(AzureResponseException arex)
        {
            Argument.AssertNotNull(arex, nameof(arex));

            if (arex?.Fault?["fault"] != null)
            {
                return(BuildFaultMessage(arex?.Fault?["fault"]?["faultMessage"]?.ToString(), arex?.Fault?["fault"]?["faultCode"]?.ToString(), arex?.Fault?["fault"]?["faultReason"]?.ToString(), arex?.Response?.RequestUri.ToString()));
            }
            else
            {
                return(BuildFaultMessage(arex?.Response?.BodyContent, arex?.Response?.StatusCode.ToString(), arex?.Response?.Reason, arex?.Response?.RequestUri.ToString()));
            }
        }
Ejemplo n.º 4
0
 /// <summary>
 /// Builds a new NACK message envelope.
 /// </summary>
 /// <param name="message">Fault message.</param>
 /// <param name="code">Fault code.</param>
 /// <param name="arex"><see cref="AzureResponseException"/> instance containing details about an error.</param>
 /// <returns><see cref="JObject"/> instance representing the envelope.</returns>
 public static JObject BuildNackEnvelope(string message, string code, AzureResponseException arex)
 {
     return BuildNackEnvelope(message, code, AzureResponseHelper.BuildFaultMessage(arex), arex.Response.TrackingId);
 }
Ejemplo n.º 5
0
 /// <summary>
 /// Builds a new NACK message envelope.
 /// </summary>
 /// <param name="message">Fault message.</param>
 /// <param name="arex"><see cref="AzureResponseException"/> instance containing details about an error.</param>
 /// <returns><see cref="JObject"/> instance representing the envelope.</returns>
 public static JObject BuildNackEnvelope(string message, AzureResponseException arex)
 {
     return BuildNackEnvelope(message, (arex?.Response == null) ? "(Unknown)" : arex.Response?.StatusCode.ToString(), AzureResponseHelper.BuildFaultMessage(arex), arex.Response.TrackingId);
 }