Пример #1
0
        /// <summary>
        /// Gets a string representation of the exception
        /// </summary>
        /// <param name="failure">The object containing details of the failure</param>
        /// <param name="correlationID">The ID of the failed request</param>
        /// <returns>A string containing the details of the exception</returns>
        private static string GetMessage(RequestFailures failure, string correlationID)
        {
            string attributes = string.Empty;

            RequestAdministratorDetails details = failure.RequestAdministratorDetails;

            if (details != null)
            {
                if (details.FailedAttributes != null)
                {
                    attributes = string.Join(",", details.FailedAttributes?.AttributeType);
                }

                return(string.Format(
                           PermissionDeniedException.messageFormat,
                           details.FailureMessage,
                           attributes,
                           details.RequestFailureSource,
                           details.AdditionalTextDetails,
                           correlationID
                           ));
            }
            else
            {
                return(string.Format("A generic permission denied failure was returned from the server that did not contain detailed information. Correlation ID: {0}", correlationID ?? string.Empty));
            }
        }
Пример #2
0
        public static Exception GetPermissionDeniedException(MessageFault fault)
        {
            RequestFailures failure = fault.DeserializeMessageWithPayload <RequestFailures>();

            if (failure == null)
            {
                return(new FaultException(fault));
            }

            if (failure.RequestAdministratorDetails?.RequestFailureSource == RequestFailureSource.ResourceIsMissing)
            {
                return(new ResourceNotFoundException());
            }

            return(new PermissionDeniedException(failure));
        }
Пример #3
0
 /// <summary>
 /// Initializes a new instance of the PermissionDeniedException class
 /// </summary>
 /// <param name="failure">The object containing the details of the failure</param>
 public PermissionDeniedException(RequestFailures failure)
     : base(GetMessage(failure, failure.CorrelationIdentifier), failure.CorrelationIdentifier)
 {
     this.details = failure.RequestAdministratorDetails;
 }