コード例 #1
0
        public override void EndProxyWebRequest(ProxyWebRequest proxyWebRequest, QueryList queryList, IService service, IAsyncResult asyncResult)
        {
            TraceWrapper.SearchLibraryTracer.TraceDebug(this.traceId, "Entering FindMessageTrackingApplication.EndProxyWebRequest", new object[0]);
            FindMessageTrackingReportResponseMessageType findMessageTrackingReportResponseMessageType = service.EndFindMessageTrackingReport(asyncResult);

            if (findMessageTrackingReportResponseMessageType == null)
            {
                base.HandleNullResponse(proxyWebRequest);
                return;
            }
            if (findMessageTrackingReportResponseMessageType.ResponseClass != ResponseClassType.Success)
            {
                TraceWrapper.SearchLibraryTracer.TraceError <object, string, string>(this.traceId, "{0}: FindMTR proxy web request returned {1} and response code {2}", TraceContext.Get(), Names <ResponseClassType> .Map[(int)findMessageTrackingReportResponseMessageType.ResponseClass], findMessageTrackingReportResponseMessageType.ResponseCode);
            }
            this.ProcessResponseMessages(this.traceId, queryList, findMessageTrackingReportResponseMessageType);
        }
コード例 #2
0
 private void ProcessResponseMessages(int traceId, QueryList queryList, FindMessageTrackingReportResponseMessageType response)
 {
     if (response == null)
     {
         Application.ProxyWebRequestTracer.TraceError((long)traceId, "{0}: Proxy web request returned NULL FindMessageTrackingReportResponseMessageType", new object[]
         {
             TraceContext.Get()
         });
         return;
     }
     foreach (BaseQuery baseQuery in ((IEnumerable <BaseQuery>)queryList))
     {
         FindMessageTrackingBaseQuery findMessageTrackingBaseQuery = (FindMessageTrackingBaseQuery)baseQuery;
         findMessageTrackingBaseQuery.SetResultOnFirstCall(new FindMessageTrackingBaseQueryResult
         {
             Response = response
         });
     }
 }
コード例 #3
0
        public FindMessageTrackingReportResponseMessageType FindMessageTrackingReport(string domain, SmtpAddress?senderAddress, SmtpAddress?recipientAddress, string serverHint, SmtpAddress?federatedDeliveryMailbox, SearchScope scope, string messageId, string subject, bool expandTree, bool searchAsRecip, bool searchForModerationResult, DateTime start, DateTime end, TrackingEventBudget eventBudget)
        {
            FindMessageTrackingReportRequestType findMessageTrackingReportRequestType = new FindMessageTrackingReportRequestType();

            findMessageTrackingReportRequestType.StartDateTime          = start;
            findMessageTrackingReportRequestType.StartDateTimeSpecified = true;
            findMessageTrackingReportRequestType.EndDateTime            = end;
            findMessageTrackingReportRequestType.EndDateTimeSpecified   = true;
            findMessageTrackingReportRequestType.MessageId  = messageId;
            findMessageTrackingReportRequestType.Subject    = subject;
            findMessageTrackingReportRequestType.Domain     = domain;
            findMessageTrackingReportRequestType.Scope      = WebServiceBinding.GetWebServiceScope(scope);
            findMessageTrackingReportRequestType.ServerHint = serverHint;
            TimeSpan clientTimeout;
            TimeSpan value;

            this.directoryContext.TrackingBudget.GetTimeBudgetRemainingForWSCall(this.trackingAuthority.TrackingAuthorityKind, out clientTimeout, out value);
            TrackingExtendedProperties trackingExtendedProperties = new TrackingExtendedProperties(expandTree, searchAsRecip, new TimeSpan?(value), false, searchForModerationResult);

            findMessageTrackingReportRequestType.Properties = trackingExtendedProperties.ToTrackingPropertyArray();
            if (this.diagnosticsContext.Enabled)
            {
                findMessageTrackingReportRequestType.DiagnosticsLevel = Names <DiagnosticsLevel> .Map[(int)this.diagnosticsContext.DiagnosticsLevel];
            }
            if (federatedDeliveryMailbox != null)
            {
                findMessageTrackingReportRequestType.FederatedDeliveryMailbox = new EmailAddressType();
                findMessageTrackingReportRequestType.FederatedDeliveryMailbox.EmailAddress = federatedDeliveryMailbox.Value.ToString();
            }
            if (senderAddress != null)
            {
                findMessageTrackingReportRequestType.Sender = new EmailAddressType();
                findMessageTrackingReportRequestType.Sender.EmailAddress = senderAddress.Value.ToString();
            }
            if (recipientAddress != null)
            {
                findMessageTrackingReportRequestType.Recipient = new EmailAddressType();
                findMessageTrackingReportRequestType.Recipient.EmailAddress = recipientAddress.Value.ToString();
            }
            Exception ex = null;

            this.WriteStartEvent(true, messageId, serverHint);
            FindMessageTrackingReportResponseMessageType findMessageTrackingReportResponseMessageType = this.TryCallWebServiceMethod <FindMessageTrackingReportResponseMessageType, FindMessageTrackingReportRequestType>(delegate(FindMessageTrackingReportRequestType req)
            {
                if (clientTimeout == TimeSpan.Zero)
                {
                    throw new TimeoutExpiredException("Not enough time remaining");
                }
                return(this.clientProxy.FindMessageTrackingReport(new FindMessageTrackingReportRequestTypeWrapper(req), clientTimeout));
            }, findMessageTrackingReportRequestType, out ex);
            int count = 0;

            if (findMessageTrackingReportResponseMessageType != null)
            {
                if (findMessageTrackingReportResponseMessageType.ResponseClass != ResponseClassType.Success)
                {
                    TrackingError trackingErrorFromWebResponseError = this.GetTrackingErrorFromWebResponseError(findMessageTrackingReportResponseMessageType.ResponseCode, this.trackingAuthority.Domain, findMessageTrackingReportResponseMessageType.MessageText);
                    this.errors.Errors.Add(trackingErrorFromWebResponseError);
                }
                this.errors.ReadErrorsFromWSMessage(findMessageTrackingReportResponseMessageType.Diagnostics, findMessageTrackingReportResponseMessageType.Errors);
                this.diagnosticsContext.MergeEvents(findMessageTrackingReportResponseMessageType.Diagnostics);
                if (findMessageTrackingReportResponseMessageType.MessageTrackingSearchResults != null)
                {
                    count = findMessageTrackingReportResponseMessageType.MessageTrackingSearchResults.Length;
                    eventBudget.IncrementBy(10U);
                    if (this.diagnosticsContext.VerboseDiagnostics)
                    {
                        foreach (FindMessageTrackingSearchResultType findMessageTrackingSearchResultType in findMessageTrackingReportResponseMessageType.MessageTrackingSearchResults)
                        {
                            this.diagnosticsContext.AddProperty(DiagnosticProperty.Data1, findMessageTrackingSearchResultType.MessageTrackingReportId);
                            this.diagnosticsContext.WriteEvent();
                        }
                    }
                }
            }
            this.WriteEndEvent(ex, count);
            if (ex != null)
            {
                throw ex;
            }
            return(findMessageTrackingReportResponseMessageType);
        }