示例#1
0
        static void Main(string[] args)
        {
            HelloServiceClient p = new HelloServiceClient();

            Console.WriteLine("Hello World says: " + p.sayHi());

            IssuesContractClient wcfIssues = new IssuesContractClient();

            // verify running
            Console.WriteLine("This system name is " + wcfIssues.Ping() + ".");

            GetIssuesRequest rqGetIssues = new GetIssuesRequest();
            // Get Sync
            GetIssuesResponse rsGetIssues = wcfIssues.GetIssues(rqGetIssues);

            Console.WriteLine(rsGetIssues.IssuesCD.Issues.Rows.Count + " row(s) read from IssuesServiceWCF.");
            // Get Async
            IAsyncResult ar = wcfIssues.BeginGetIssues(rqGetIssues, wcf_ClientGetIssuesCompleted, wcfIssues);

            SettingsContractClient wcfSettings = new SettingsContractClient();

            // verify running
            Console.WriteLine("This system name is " + wcfSettings.Ping() + ".");

            GetUserSettingsRequest rqGetUserSettings = new GetUserSettingsRequest();

            rqGetUserSettings.UserName = "******";
            //// Get Sync
            GetUserSettingsResponse rsGetUserSettings = wcfSettings.GetUserSettings(rqGetUserSettings);
        }
示例#2
0
        /// <summary>
        /// Get UserSettings by UserName
        /// </summary>
        /// <param name="request">The GetUserSettingsRequest object.</param>
        /// <returns>A GetUserSettingsResponse object</returns>
        public GetUserSettingsResponse GetUserSettings(GetUserSettingsRequest request)
        {
            GetUserSettingsResponse response = new GetUserSettingsResponse();

            response.UserSettingsCD = UserSettingsCD.GetUserSettings(request.UserName);

            return(response);
        }
示例#3
0
        protected override IAsyncResult BeginGetSettings(AsyncCallback callback)
        {
            User[] array = new User[base.EmailAddresses.Length];
            for (int i = 0; i < base.EmailAddresses.Length; i++)
            {
                array[i] = new User
                {
                    Mailbox = base.EmailAddresses[i].Address
                };
            }
            GetUserSettingsRequest request = new GetUserSettingsRequest
            {
                Users             = array,
                RequestedSettings = UserSoapAutoDiscoverRequest.RequestedSettings,
                RequestedVersion  = new ExchangeVersion?(base.Application.GetRequestedVersionForAutoDiscover(base.AutodiscoverType) ?? ExchangeVersion.Exchange2010)
            };

            if (this.authenticator.ProxyAuthenticator != null && this.authenticator.ProxyAuthenticator.AuthenticatorType == AuthenticatorType.WSSecurity)
            {
                this.client.HttpHeaders.Add("X-AnchorMailbox", base.EmailAddresses[0].Address);
            }
            SoapAutoDiscoverRequest.AutoDiscoverTracer.TraceDebug <object, string, Uri>((long)this.GetHashCode(), "{0}: Adding header mailbox {1} to request to {2}.", TraceContext.Get(), base.EmailAddresses[0].Address, base.TargetUri);
            return(this.client.BeginGetUserSettings(request, callback, null));
        }
示例#4
0
        public List <AutoDiscoverResult> GetUserEwsEndpoints(IEnumerable <string> mailboxes)
        {
            GetUserSettingsRequest getUserSettingsRequest = new GetUserSettingsRequest();

            getUserSettingsRequest.Users = (from mailbox in mailboxes
                                            select new User
            {
                Mailbox = mailbox
            }).ToArray <User>();
            getUserSettingsRequest.RequestedSettings = new string[]
            {
                "ExternalEwsUrl",
                "InternalEwsUrl"
            };
            if (this.AutoDiscoverInternalUrlOnly)
            {
                getUserSettingsRequest.RequestedSettings = new string[]
                {
                    "InternalEwsUrl"
                };
            }
            List <AutoDiscoverResult> results = new List <AutoDiscoverResult>(getUserSettingsRequest.Users.Length);

            if (this.Connect())
            {
                Tracer.TraceInformation("AutoDiscoverClient.GetUserEwsEndpoints: URL:{0}, number of mailboxes:{1}", new object[]
                {
                    base.ServiceBinding.Url,
                    getUserSettingsRequest.Users.Length
                });
                base.ServiceBinding.RequestedServerVersionValue = new RequestedServerVersion
                {
                    Text = new string[]
                    {
                        "Exchange2010"
                    }
                };
                base.ServiceBinding.Action = new Microsoft.Exchange.EDiscovery.Export.AutoDiscoverProxy.Action
                {
                    Text = "http://schemas.microsoft.com/exchange/2010/Autodiscover/Autodiscover/GetUserSettings"
                };
                base.ServiceBinding.To = new To
                {
                    Text = base.ServiceBinding.Url
                };
                base.ServiceCallingContext.SetServiceApiContext(base.ServiceBinding, getUserSettingsRequest.Users[0].Mailbox);
                base.InternalCallService <GetUserSettingsResponse>(() => this.ServiceBinding.GetUserSettings(getUserSettingsRequest), delegate(GetUserSettingsResponse response)
                {
                    if (response.UserResponses != null)
                    {
                        UserResponse[] userResponses = response.UserResponses;
                        int i = 0;
                        while (i < userResponses.Length)
                        {
                            UserResponse userResponse = userResponses[i];
                            switch (userResponse.ErrorCode)
                            {
                            case ErrorCode.NoError:
                                {
                                    string text  = null;
                                    string text2 = null;
                                    if (userResponse.UserSettings != null && userResponse.UserSettings.Length > 0)
                                    {
                                        foreach (UserSetting userSetting in userResponse.UserSettings)
                                        {
                                            StringSetting stringSetting = userSetting as StringSetting;
                                            if (stringSetting != null)
                                            {
                                                if (stringSetting.Name == "ExternalEwsUrl" && Uri.IsWellFormedUriString(stringSetting.Value, UriKind.Absolute))
                                                {
                                                    text2 = stringSetting.Value;
                                                    break;
                                                }
                                                if (stringSetting.Name == "InternalEwsUrl" && Uri.IsWellFormedUriString(stringSetting.Value, UriKind.Absolute))
                                                {
                                                    text = stringSetting.Value;
                                                }
                                            }
                                        }
                                    }
                                    if (!string.IsNullOrEmpty(text2))
                                    {
                                        Tracer.TraceInformation("AutoDiscoverClient.GetUserEwsEndpoints: ExternalEwsUrl found: {0}", new object[]
                                        {
                                            text2
                                        });
                                        results.Add(new AutoDiscoverResult(AutoDiscoverResultCode.Success, text2));
                                        this.ServiceCallingContext.SetServiceUrlAffinity(this.ServiceBinding, new Uri(text2));
                                    }
                                    else if (!string.IsNullOrEmpty(text))
                                    {
                                        Tracer.TraceInformation("AutoDiscoverClient.GetUserEwsEndpoints: InternalEwsUrl found: {0}", new object[]
                                        {
                                            text
                                        });
                                        results.Add(new AutoDiscoverResult(AutoDiscoverResultCode.Success, text));
                                        this.ServiceCallingContext.SetServiceUrlAffinity(this.ServiceBinding, new Uri(text));
                                    }
                                    else
                                    {
                                        Tracer.TraceInformation("AutoDiscoverClient.GetUserEwsEndpoints: Ews endpoint not found.", new object[0]);
                                        results.Add(new AutoDiscoverResult(AutoDiscoverResultCode.UrlConfigurationNotFound, null));
                                    }
                                    break;
                                }

                            case ErrorCode.RedirectAddress:
                                Tracer.TraceInformation("AutoDiscoverClient.GetUserEwsEndpoints: EmailAddressRedirected: {0}", new object[]
                                {
                                    userResponse.RedirectTarget
                                });
                                results.Add(new AutoDiscoverResult(AutoDiscoverResultCode.EmailAddressRedirected, userResponse.RedirectTarget));
                                break;

                            case ErrorCode.RedirectUrl:
                                Tracer.TraceInformation("AutoDiscoverClient.GetUserEwsEndpoints: UrlRedirected: {0}", new object[]
                                {
                                    userResponse.RedirectTarget
                                });
                                results.Add(new AutoDiscoverResult(AutoDiscoverResultCode.UrlRedirected, userResponse.RedirectTarget));
                                break;

                            case ErrorCode.InvalidUser:
                                Tracer.TraceInformation("AutoDiscoverClient.GetUserEwsEndpoints: InvalidUser: {0}", new object[]
                                {
                                    userResponse.ErrorMessage
                                });
                                results.Add(new AutoDiscoverResult(AutoDiscoverResultCode.InvalidUser, null));
                                break;

                            case ErrorCode.InvalidRequest:
                            case ErrorCode.InvalidSetting:
                            case ErrorCode.SettingIsNotAvailable:
                            case ErrorCode.InvalidDomain:
                            case ErrorCode.NotFederated:
                                goto IL_2B2;

                            case ErrorCode.ServerBusy:
                            case ErrorCode.InternalServerError:
                                Tracer.TraceInformation("AutoDiscoverClient.GetUserEwsEndpoints: TransientError: {0}", new object[]
                                {
                                    userResponse.ErrorMessage
                                });
                                results.Add(new AutoDiscoverResult(AutoDiscoverResultCode.TransientError, null));
                                break;

                            default:
                                goto IL_2B2;
                            }
                            IL_2E7:
                            i++;
                            continue;
                            IL_2B2:
                            Tracer.TraceInformation("AutoDiscoverClient.GetUserEwsEndpoints: Unknown error: {0}", new object[]
                            {
                                userResponse.ErrorMessage
                            });
                            results.Add(new AutoDiscoverResult(AutoDiscoverResultCode.Error, userResponse.ErrorMessage));
                            goto IL_2E7;
                        }
                    }
                }, null, () => base.ServiceCallingContext.AuthorizeServiceBinding(base.ServiceBinding), delegate(Uri redirectedUrl)
                {
                    base.ServiceCallingContext.SetServiceUrlAffinity(base.ServiceBinding, redirectedUrl);
                    base.ServiceCallingContext.SetServiceUrl(base.ServiceBinding, redirectedUrl);
                    base.ServiceBinding.To = new To
                    {
                        Text = base.ServiceBinding.Url
                    };
                });
                return(results);
            }
            throw new ExportException(ExportErrorType.ExchangeWebServiceCallFailed, "Unable to connect to auto discover service at: " + base.ServiceEndpoint.ToString());
        }