Пример #1
0
        private Exception GetSpecificException(Exception exception)
        {
            SoapException ex = exception as SoapException;

            if (ex != null && ex.Code != null && !string.IsNullOrEmpty(ex.Code.Name))
            {
                ResponseCodeType responseCodeType;
                bool             flag = Enum.TryParse <ResponseCodeType>(ex.Code.Name, out responseCodeType);
                if (flag)
                {
                    if (this.IsTraceEnabled(TraceType.ErrorTrace))
                    {
                        this.Tracer.TraceError <XmlQualifiedName, string>(0L, "EwsAuditClient EWS response Code: {0} Detail: {1} ", ex.Code, ex.Detail.InnerText);
                    }
                    ResponseCodeType responseCodeType2 = responseCodeType;
                    if (responseCodeType2 == ResponseCodeType.ErrorAccessDenied || responseCodeType2 == ResponseCodeType.ErrorTokenSerializationDenied)
                    {
                        return(new AuditLogAccessDeniedException(ex));
                    }
                }
                return(new AuditLogServiceException(string.Empty, ex.Code.Name, ex.Message, exception));
            }
            if (exception is AuditLogException)
            {
                return(exception);
            }
            return(new AuditLogException(Strings.FailedToAccessAuditLogWithInnerException, exception));
        }
Пример #2
0
        public static bool IsRebindableError(ResponseCodeType code)
        {
            switch (code)
            {
            case ResponseCodeType.ErrorMailboxMoveInProgress:
            case ResponseCodeType.ErrorMailboxStoreUnavailable:
                break;

            default:
                switch (code)
                {
                case ResponseCodeType.ErrorProxyServiceDiscoveryFailed:
                case ResponseCodeType.ErrorProxyTokenExpired:
                    break;

                default:
                    if (code != ResponseCodeType.ErrorMailboxFailover)
                    {
                        return(false);
                    }
                    break;
                }
                break;
            }
            return(true);
        }
        public void MSOXWSCORE_S07_TC06_CreateTaskItemFailed()
        {
            #region Step 1: Create the task item with invalid item class.
            TaskType[] items = new TaskType[]
            {
                new TaskType()
                {
                    Subject = Common.GenerateResourceName(
                        this.Site,
                        TestSuiteHelper.SubjectForCreateItem),

                    // Set an invalid ItemClass to post item.
                    ItemClass = TestSuiteHelper.InvalidItemClass
                }
            };

            CreateItemResponseType createItemResponse = this.CallCreateItemOperation(DistinguishedFolderIdNameType.tasks, items);

            #endregion

            // Get ResponseCode from CreateItem operation response.
            ResponseCodeType responseCode = createItemResponse.ResponseMessages.Items[0].ResponseCode;

            // Verify MS-OXWSCDATA_R619.
            this.VerifyErrorObjectTypeChanged(responseCode);
        }
Пример #4
0
        public override void EndProxyWebRequest(ProxyWebRequest proxyWebRequest, QueryList queryList, IService service, IAsyncResult asyncResult)
        {
            MailTipsApplication.GetMailTipsTracer.TraceFunction((long)this.traceId, "Entering MailTipsApplication.EndProxyWebRequest");
            GetMailTipsResponseMessageType getMailTipsResponseMessageType = service.EndGetMailTips(asyncResult);
            int hashCode = proxyWebRequest.GetHashCode();

            if (getMailTipsResponseMessageType == null)
            {
                Application.ProxyWebRequestTracer.TraceError((long)this.traceId, "{0}: Proxy web request returned NULL GetMailTipsResponseMessageType", new object[]
                {
                    TraceContext.Get()
                });
                queryList.SetResultInAllQueries(new MailTipsQueryResult(new NoEwsResponseException()));
                base.HandleNullResponse(proxyWebRequest);
                return;
            }
            ResponseCodeType responseCode = getMailTipsResponseMessageType.ResponseCode;

            if (responseCode != ResponseCodeType.NoError)
            {
                Application.ProxyWebRequestTracer.TraceError <object, string>((long)hashCode, "{0}: Proxy web request returned error code {1}", TraceContext.Get(), responseCode.ToString());
                queryList.SetResultInAllQueries(new MailTipsQueryResult(new ErrorEwsResponseException(responseCode)));
                return;
            }
            this.ProcessResponseMessages(hashCode, queryList, getMailTipsResponseMessageType);
        }
Пример #5
0
        public void MSOXWSCORE_S03_TC07_CreateDistributionListsItemFailed()
        {
            Site.Assume.IsTrue(Common.IsRequirementEnabled(19241, this.Site), "Exchange 2007 doesn't support MS-OXWSDLIST");

            #region Step 1: Create the distribution list type item with invalid item class.
            DistributionListType[] createdItems = new DistributionListType[]
            {
                new DistributionListType()
                {
                    Subject = Common.GenerateResourceName(
                        this.Site,
                        TestSuiteHelper.SubjectForCreateItem),

                    // Set an invalid ItemClass to contact item.
                    ItemClass = TestSuiteHelper.InvalidItemClass
                }
            };

            CreateItemResponseType createItemResponse = this.CallCreateItemOperation(DistinguishedFolderIdNameType.contacts, createdItems);

            #endregion

            // Get ResponseCode from CreateItem operation response.
            ResponseCodeType responseCode = createItemResponse.ResponseMessages.Items[0].ResponseCode;

            // Verify MS-OXWSCDATA_R619.
            this.VerifyErrorObjectTypeChanged(responseCode);
        }
Пример #6
0
 private async void LogRequest(ServiceLog requestLog, string clientId, ResponseCodeType responseCode, Stopwatch requestWatch, bool logRolling)
 {
     try
     {
         requestLog.ResponseCode = responseCode;
         requestWatch.Stop();
         requestLog.TimeTakenMs = requestWatch.ElapsedMilliseconds;
         await mongoRepository.Add(requestLog, clientId, requestLog.GetType().Name, logRolling);
     }
     catch (Exception exception)
     {
         logger.LogError("Error logging service request: " + exception.Message);
     }
 }
        private bool IsReponseErrorRetryable(ResponseCodeType errorCode)
        {
            if (errorCode != ResponseCodeType.ErrorConnectionFailed)
            {
                switch (errorCode)
                {
                case ResponseCodeType.ErrorMailboxMoveInProgress:
                case ResponseCodeType.ErrorMailboxStoreUnavailable:
                    break;

                default:
                    if (errorCode != ResponseCodeType.ErrorTimeoutExpired)
                    {
                        return(false);
                    }
                    break;
                }
            }
            return(true);
        }
Пример #8
0
        public CoapResponse(ushort messageId, ResponseMessageType type, ResponseCodeType code, byte[] token, MediaType?contentType, byte[] payload)
        {
            this.MessageId    = messageId;
            this.ResponseType = type;
            this.ResponseCode = code;
            this.Code         = (CodeType)code;

            if (token != null)
            {
                this.Token = token;
            }

            if (contentType.HasValue)
            {
                this.ContentType = contentType;
            }

            this.Payload  = payload;
            this._options = new CoapOptionCollection();
        }
Пример #9
0
 private TrackingError GetTrackingErrorFromWebResponseError(ResponseCodeType responseCode, string target, string messageText)
 {
     if (responseCode == ResponseCodeType.NoError)
     {
         throw new ArgumentException("ResponseCodeType.NoError cannot be mapped because it is not an error.");
     }
     TraceWrapper.SearchLibraryTracer.TraceDebug <string, string>(this.GetHashCode(), "Mapping error code {0} from web response.  MessageText: {1}", Names <ResponseCodeType> .Map[(int)responseCode], messageText);
     if (responseCode != ResponseCodeType.ErrorAccessDenied)
     {
         TraceWrapper.SearchLibraryTracer.TraceError <string, string>(this.GetHashCode(), "Mapping error code {0} from web response to generic failure. MessageText: {1}", Names <ResponseCodeType> .Map[(int)responseCode], messageText);
         return(new TrackingError(ErrorCode.UnexpectedErrorTransient, string.Empty, string.Format("WebException connecting to {0}", target), messageText));
     }
     if (this.trackingAuthority.TrackingAuthorityKind == TrackingAuthorityKind.RemoteTrustedOrg)
     {
         return(new TrackingError(ErrorCode.CrossPremiseMisconfiguration, target, string.Empty, messageText));
     }
     if (this.trackingAuthority.TrackingAuthorityKind == TrackingAuthorityKind.RemoteForest)
     {
         return(new TrackingError(ErrorCode.CrossForestMisconfiguration, target, string.Empty, messageText));
     }
     return(new TrackingError(ErrorCode.UnexpectedErrorTransient, target, string.Empty, messageText));
 }
 /// <summary>
 /// Grab the response code from within a soap exception (Listing 18-16)
 /// </summary>
 /// <param name="soapException">Soap Exception to examine</param>
 /// <returns>True if parse was successful</returns>
 ///
 public static bool TryGetResponseCodeFromSoapException(
                                     SoapException soapException,
                                     out ResponseCodeType responseCode)
 {
     responseCode = ResponseCodeType.NoError;
     XmlElement detailElement = (XmlElement)soapException.Detail;
     if (detailElement == null)
     {
         return false;
     }
     XmlElement responseCodeElement = detailElement[
                "ResponseCode",
                "http://schemas.microsoft.com/exchange/services/2006/errors"];
     if (responseCodeElement == null)
     {
         return false;
     }
     responseCode = (ResponseCodeType)Enum.Parse(
                     typeof(ResponseCodeType),
                     responseCodeElement.InnerText);
     return true;
 }
 public TransportServiceDescriptionType() {
     this.transportationServiceField = new ObservableCollection<TransportationServiceType>();
     this.validityPeriodField = new PeriodType();
     this.serviceChargePaymentTermsField = new PaymentTermsType();
     this.transportServiceProviderPartyField = new PartyType();
     this.transportServiceDescriptionRequestDocumentReferenceField = new DocumentReferenceType();
     this.receiverPartyField = new PartyType();
     this.senderPartyField = new PartyType();
     this.signatureField = new ObservableCollection<SignatureType>();
     this.responseCodeField = new ResponseCodeType();
     this.serviceNameField = new ServiceNameType();
     this.noteField = new ObservableCollection<NoteType>();
     this.issueTimeField = new IssueTimeType();
     this.issueDateField = new IssueDateType();
     this.uUIDField = new UUIDType();
     this.copyIndicatorField = new CopyIndicatorType();
     this.idField = new IDType();
     this.profileExecutionIDField = new ProfileExecutionIDType();
     this.profileIDField = new ProfileIDType();
     this.customizationIDField = new CustomizationIDType();
     this.uBLVersionIDField = new UBLVersionIDType();
     this.uBLExtensionsField = new ObservableCollection<UBLExtensionType>();
 }
 public TransportServiceDescriptionType()
 {
     this.transportationServiceField         = new ObservableCollection <TransportationServiceType>();
     this.validityPeriodField                = new PeriodType();
     this.serviceChargePaymentTermsField     = new PaymentTermsType();
     this.transportServiceProviderPartyField = new PartyType();
     this.transportServiceDescriptionRequestDocumentReferenceField = new DocumentReferenceType();
     this.receiverPartyField      = new PartyType();
     this.senderPartyField        = new PartyType();
     this.signatureField          = new ObservableCollection <SignatureType>();
     this.responseCodeField       = new ResponseCodeType();
     this.serviceNameField        = new ServiceNameType();
     this.noteField               = new ObservableCollection <NoteType>();
     this.issueTimeField          = new IssueTimeType();
     this.issueDateField          = new IssueDateType();
     this.uUIDField               = new UUIDType();
     this.copyIndicatorField      = new CopyIndicatorType();
     this.idField                 = new IDType();
     this.profileExecutionIDField = new ProfileExecutionIDType();
     this.profileIDField          = new ProfileIDType();
     this.customizationIDField    = new CustomizationIDType();
     this.uBLVersionIDField       = new UBLVersionIDType();
     this.uBLExtensionsField      = new ObservableCollection <UBLExtensionType>();
 }
Пример #13
0
 // Token: 0x060018AB RID: 6315
 protected abstract TResponse CreateErrorResponse(Exception exception, ResponseCodeType codeType);
Пример #14
0
 public CoapResponse(ushort messageId, ResponseMessageType type, ResponseCodeType code, byte[] token)
     : this(messageId, type, code, token, null, null)
 {
 }
Пример #15
0
 public CoapResponse(ushort messageId, ResponseMessageType type, ResponseCodeType code)
     : this(messageId, type, code, null, null, null)
 {
 }
Пример #16
0
        protected override FindItemJsonResponse CreateErrorResponse(Exception exception, ResponseCodeType codeType)
        {
            base.TraceError("FindItemAnonymous:CreateErrorResponse. Exception:{0}", new object[]
            {
                exception
            });
            FindItemResponse findItemResponse = new FindItemResponse();
            ServiceError     error            = new ServiceError(base.GetExceptionMessage(exception), codeType, 0, ExchangeVersion.Latest);

            findItemResponse.AddResponse(new ResponseMessage(ServiceResultCode.Error, error));
            return(new FindItemJsonResponse
            {
                Body = findItemResponse
            });
        }
Пример #17
0
        public static bool IsTransientError(ResponseCodeType code)
        {
            if (code <= ResponseCodeType.ErrorInternalServerTransientError)
            {
                if (code <= ResponseCodeType.ErrorDeleteItemsFailed)
                {
                    switch (code)
                    {
                    case ResponseCodeType.ErrorADOperation:
                    case ResponseCodeType.ErrorADUnavailable:
                        break;

                    case ResponseCodeType.ErrorADSessionFilter:
                        return(false);

                    default:
                        if (code != ResponseCodeType.ErrorBatchProcessingStopped && code != ResponseCodeType.ErrorDeleteItemsFailed)
                        {
                            return(false);
                        }
                        break;
                    }
                }
                else if (code != ResponseCodeType.ErrorExceededConnectionCount && code != ResponseCodeType.ErrorFolderSavePropertyError)
                {
                    switch (code)
                    {
                    case ResponseCodeType.ErrorInsufficientResources:
                    case ResponseCodeType.ErrorInternalServerTransientError:
                        break;

                    case ResponseCodeType.ErrorInternalServerError:
                        return(false);

                    default:
                        return(false);
                    }
                }
            }
            else if (code <= ResponseCodeType.ErrorNotEnoughMemory)
            {
                if (code != ResponseCodeType.ErrorItemSavePropertyError)
                {
                    switch (code)
                    {
                    case ResponseCodeType.ErrorMailboxMoveInProgress:
                    case ResponseCodeType.ErrorMailboxStoreUnavailable:
                        break;

                    default:
                        if (code != ResponseCodeType.ErrorNotEnoughMemory)
                        {
                            return(false);
                        }
                        break;
                    }
                }
            }
            else if (code <= ResponseCodeType.ErrorTimeoutExpired)
            {
                switch (code)
                {
                case ResponseCodeType.ErrorServerBusy:
                case ResponseCodeType.ErrorStaleObject:
                    break;

                case ResponseCodeType.ErrorServiceDiscoveryFailed:
                    return(false);

                default:
                    if (code != ResponseCodeType.ErrorTimeoutExpired)
                    {
                        return(false);
                    }
                    break;
                }
            }
            else if (code != ResponseCodeType.ErrorTooManyObjectsOpened && code != ResponseCodeType.ErrorMessageTrackingTransientError)
            {
                return(false);
            }
            return(true);
        }
Пример #18
0
        private ItemType[] InternalFindItems(FindItemType findItemType, ItemResponseShapeType itemShape)
        {
            if (itemShape == null)
            {
                itemShape = EwsAuditClient.DefaultItemShape;
            }
            List <ItemType> items = null;
            IEnumerable <BaseItemIdType> enumerable = this.InternalFindItemIds(findItemType);

            using (IEnumerator <BaseItemIdType> enumerator = enumerable.GetEnumerator())
            {
                List <BaseItemIdType> list = new List <BaseItemIdType>(64);
                bool flag;
                do
                {
                    flag = enumerator.MoveNext();
                    if (flag)
                    {
                        list.Add(enumerator.Current);
                    }
                    if (list.Count == 64 || (list.Count > 0 && !flag))
                    {
                        GetItemType getItemType = new GetItemType
                        {
                            ItemShape = itemShape,
                            ItemIds   = list.ToArray()
                        };
                        this.CallEwsWithRetries((LID)41148U, () => this.binding.GetItem(getItemType), delegate(ResponseMessageType responseMessage, int messageIndex)
                        {
                            ItemInfoResponseMessageType itemInfoResponseMessageType = responseMessage as ItemInfoResponseMessageType;
                            if (itemInfoResponseMessageType != null && itemInfoResponseMessageType.ResponseClass == ResponseClassType.Success && itemInfoResponseMessageType.Items != null)
                            {
                                ItemType[] items = itemInfoResponseMessageType.Items.Items;
                                foreach (ItemType item in items)
                                {
                                    if (items == null)
                                    {
                                        items = new List <ItemType>();
                                    }
                                    items.Add(item);
                                }
                                return(false);
                            }
                            return(false);
                        }, delegate(ResponseMessageType responseMessage, int messageIndex)
                        {
                            if (responseMessage != null && responseMessage.ResponseClass == ResponseClassType.Error)
                            {
                                ResponseCodeType responseCode = responseMessage.ResponseCode;
                                if (responseCode == ResponseCodeType.ErrorItemNotFound || responseCode == ResponseCodeType.ErrorMessageSizeExceeded)
                                {
                                    return(true);
                                }
                            }
                            return(false);
                        });
                        list.Clear();
                    }
                }while (flag);
            }
            if (items != null && items.Count > 0)
            {
                return(items.ToArray());
            }
            return(Array <ItemType> .Empty);
        }
Пример #19
0
 public ResponseCode(ResponseCodeType type, string argument = null)
 {
     this.Type     = type;
     this.Argument = argument;
 }
 public ErrorEwsResponseException(ResponseCodeType responseCodeType) : base(Strings.descErrorEwsResponse((int)responseCodeType))
 {
     this.ResponseCodeType = responseCodeType;
 }
Пример #21
0
 private static string GetMessageByCode(ResponseCodeType code)
 => code switch
 {
Пример #22
0
        // Token: 0x06000756 RID: 1878 RVA: 0x0001CC98 File Offset: 0x0001AE98
        private bool Write(AuditRecord record)
        {
            Exception exception = null;
            bool      retry     = false;

            try
            {
                GrayException.MapAndReportGrayExceptions(delegate()
                {
                    try
                    {
                        record.Visit(this.visitor);
                        exception = null;
                        retry     = false;
                    }
                    catch (ServerInMMException exception2)
                    {
                        exception = exception2;
                        retry     = true;
                    }
                    catch (TenantAccessBlockedException exception3)
                    {
                        exception = exception3;
                        retry     = false;
                    }
                    catch (DataSourceOperationException exception4)
                    {
                        exception = exception4;
                        retry     = true;
                    }
                    catch (ADTransientException exception5)
                    {
                        exception = exception5;
                        retry     = true;
                    }
                    catch (AuditException exception6)
                    {
                        exception = exception6;
                        retry     = false;
                    }
                    catch (AuditLogServiceException ex)
                    {
                        exception = ex;
                        retry     = false;
                        ResponseCodeType responseCodeType;
                        Enum.TryParse <ResponseCodeType>(ex.Code, true, out responseCodeType);
                        ResponseCodeType responseCodeType2 = responseCodeType;
                        if (responseCodeType2 <= ResponseCodeType.ErrorNotEnoughMemory)
                        {
                            if (responseCodeType2 <= ResponseCodeType.ErrorClientDisconnected)
                            {
                                if (responseCodeType2 != ResponseCodeType.ErrorADUnavailable && responseCodeType2 != ResponseCodeType.ErrorBatchProcessingStopped && responseCodeType2 != ResponseCodeType.ErrorClientDisconnected)
                                {
                                    goto IL_185;
                                }
                            }
                            else if (responseCodeType2 <= ResponseCodeType.ErrorInternalServerTransientError)
                            {
                                if (responseCodeType2 != ResponseCodeType.ErrorConnectionFailed)
                                {
                                    switch (responseCodeType2)
                                    {
                                    case ResponseCodeType.ErrorInsufficientResources:
                                    case ResponseCodeType.ErrorInternalServerTransientError:
                                        break;

                                    case ResponseCodeType.ErrorInternalServerError:
                                        goto IL_185;

                                    default:
                                        goto IL_185;
                                    }
                                }
                            }
                            else
                            {
                                switch (responseCodeType2)
                                {
                                case ResponseCodeType.ErrorMailboxMoveInProgress:
                                case ResponseCodeType.ErrorMailboxStoreUnavailable:
                                    break;

                                default:
                                    if (responseCodeType2 != ResponseCodeType.ErrorNotEnoughMemory)
                                    {
                                        goto IL_185;
                                    }
                                    break;
                                }
                            }
                        }
                        else if (responseCodeType2 <= ResponseCodeType.ErrorTimeoutExpired)
                        {
                            if (responseCodeType2 != ResponseCodeType.ErrorRequestAborted && responseCodeType2 != ResponseCodeType.ErrorServerBusy && responseCodeType2 != ResponseCodeType.ErrorTimeoutExpired)
                            {
                                goto IL_185;
                            }
                        }
                        else if (responseCodeType2 <= ResponseCodeType.ErrorMailboxFailover)
                        {
                            if (responseCodeType2 != ResponseCodeType.ErrorTooManyObjectsOpened && responseCodeType2 != ResponseCodeType.ErrorMailboxFailover)
                            {
                                goto IL_185;
                            }
                        }
                        else if (responseCodeType2 != ResponseCodeType.ErrorUMServerUnavailable && responseCodeType2 != ResponseCodeType.ErrorLocationServicesRequestTimedOut)
                        {
                            goto IL_185;
                        }
                        retry = true;
                        IL_185:;
                    }
                    catch (AuditLogException ex2)
                    {
                        exception        = ex2;
                        WebException ex3 = ex2.InnerException as WebException;
                        if (ex3 != null)
                        {
                            WebExceptionStatus status = ex3.Status;
                            if (status == WebExceptionStatus.Timeout)
                            {
                                retry = true;
                            }
                            else
                            {
                                retry = false;
                            }
                        }
                        else
                        {
                            retry = false;
                        }
                    }
                    if (exception != null && this.Tracer.IsTraceEnabled(TraceType.DebugTrace))
                    {
                        this.Tracer.TraceDebug((long)this.GetHashCode(), "AuditDatabaseWriter.Write. Failed while processing audit record: Id={0}, OrgId={1}, Operation={2}, Type={3}. Error: {4}", new object[]
                        {
                            record.Id,
                            record.OrganizationId,
                            record.Operation,
                            record.RecordType,
                            exception
                        });
                    }
                });
            }
            catch (GrayException exception)
            {
                GrayException exception7;
                exception = exception7;
                retry     = false;
                if (exception != null && this.Tracer.IsTraceEnabled(TraceType.ErrorTrace))
                {
                    this.Tracer.TraceError((long)this.GetHashCode(), "AuditDatabaseWriter.Write. Failed while processing audit record: Id={0}, OrgId={1}, Operation={2}, Type={3}. Error: {4}", new object[]
                    {
                        record.Id,
                        record.OrganizationId,
                        record.Operation,
                        record.RecordType,
                        exception
                    });
                }
            }
            finally
            {
                if (exception != null)
                {
                    AuditHealthInfo.Instance.AddException(exception);
                    AuditDatabaseWriterHealth instance = Singleton <AuditDatabaseWriterHealth> .Instance;
                    instance.Add(new RecordProcessingResult(record, exception, retry));
                    if (!retry)
                    {
                        instance.FailedBatchCount++;
                    }
                }
            }
            return(!retry);
        }