예제 #1
0
        // Token: 0x06000391 RID: 913 RVA: 0x000161C0 File Offset: 0x000143C0
        internal static Uri GetRandomCasExternalServiceUri <T>(ExchangeVersion?requestedVersion, out int serverVersion) where T : HttpService
        {
            Dictionary <Uri, int> uriMinimumVersions = null;

            serverVersion = 0;
            try
            {
                ServiceTopology currentServiceTopology = ServiceTopology.GetCurrentServiceTopology("f:\\15.00.1497\\sources\\dev\\autodisc\\src\\WCF\\Requests\\GetDomainSettingsRequestMessage.cs", "GetRandomCasExternalServiceUri", 101);
                int             minimumVersionNeeded   = GetDomainSettingsRequestMessage.GetMinimumServerVersionForExchangeVersion(requestedVersion);
                currentServiceTopology.ForEach <T>(delegate(T service)
                {
                    if (service.ServerVersionNumber >= minimumVersionNeeded && service.ClientAccessType == ClientAccessType.External)
                    {
                        if (uriMinimumVersions == null)
                        {
                            uriMinimumVersions = new Dictionary <Uri, int>(10);
                        }
                        int num;
                        if (!uriMinimumVersions.TryGetValue(service.Url, out num) || num > service.ServerVersionNumber)
                        {
                            uriMinimumVersions[service.Url] = service.ServerVersionNumber;
                        }
                    }
                }, "f:\\15.00.1497\\sources\\dev\\autodisc\\src\\WCF\\Requests\\GetDomainSettingsRequestMessage.cs", "GetRandomCasExternalServiceUri", 105);
            }
            catch (ServiceDiscoveryTransientException arg)
            {
                ExTraceGlobals.FrameworkTracer.TraceError <ServiceDiscoveryTransientException>(0L, "GetRandomCasExternalServiceUri encountered transient exception: {0}", arg);
            }
            catch (ServiceDiscoveryPermanentException arg2)
            {
                ExTraceGlobals.FrameworkTracer.TraceError <ServiceDiscoveryPermanentException>(0L, "GetRandomCasExternalServiceUri encountered permanent exception: {0}", arg2);
            }
            if (uriMinimumVersions == null)
            {
                return(null);
            }
            int index = GetDomainSettingsRequestMessage.random.Next(uriMinimumVersions.Count);
            Uri uri   = uriMinimumVersions.Keys.ElementAt(index);

            serverVersion = uriMinimumVersions[uri];
            return(uri);
        }
예제 #2
0
 public GetDomainSettingsResponseMessage GetDomainSettings(GetDomainSettingsRequestMessage message)
 {
     return(this.Execute <GetDomainSettingsResponseMessage>(message));
 }
예제 #3
0
 // Token: 0x06000397 RID: 919 RVA: 0x00016598 File Offset: 0x00014798
 private void ExecuteGetDomainSettingsCommand(IPrincipal callingPrincipal, GetDomainSettingsCallContext callContext)
 {
     this.CheckIdentity(callingPrincipal);
     if (callContext.RequestedSettings.Contains(DomainConfigurationSettingName.ExternalEwsUrl) && callContext.Domains != null && callContext.Domains.Count > 0)
     {
         Uri uri;
         int currentExchangeMajorVersion;
         if (Common.SkipServiceTopologyInDatacenter())
         {
             uri = FrontEndLocator.GetDatacenterFrontEndWebServicesUrl();
             currentExchangeMajorVersion = Server.CurrentExchangeMajorVersion;
         }
         else
         {
             uri = GetDomainSettingsRequestMessage.GetRandomCasExternalServiceUri <WebServicesService>(callContext.RequestedVersion, out currentExchangeMajorVersion);
         }
         DomainStringSetting setting  = null;
         DomainStringSetting setting2 = null;
         if (null != uri)
         {
             setting = new DomainStringSetting
             {
                 Name  = GetDomainSettingsRequestMessage.externalEwsUrlSettingName,
                 Value = uri.AbsoluteUri
             };
         }
         bool flag = callContext.RequestedSettings.Contains(DomainConfigurationSettingName.ExternalEwsVersion);
         if (flag)
         {
             ServerVersion serverVersion = new ServerVersion(currentExchangeMajorVersion);
             setting2 = new DomainStringSetting
             {
                 Name  = GetDomainSettingsRequestMessage.externalEwsVersionSettingName,
                 Value = string.Format(CultureInfo.InvariantCulture, "{0:d}.{1:d2}.{2:d4}.{3:d3}", new object[]
                 {
                     serverVersion.Major,
                     serverVersion.Minor,
                     serverVersion.Build,
                     serverVersion.Revision
                 })
             };
         }
         using (IEnumerator <string> enumerator = callContext.Domains.GetEnumerator())
         {
             while (enumerator.MoveNext())
             {
                 string         text           = enumerator.Current;
                 DomainResponse domainResponse = new DomainResponse();
                 domainResponse.ErrorCode           = ErrorCode.NoError;
                 domainResponse.ErrorMessage        = Strings.NoError;
                 domainResponse.DomainSettingErrors = new DomainSettingErrorCollection();
                 domainResponse.DomainSettings      = new DomainSettingCollection();
                 GetDomainSettingsRequestMessage.AddSettingToResponse(domainResponse, setting, GetDomainSettingsRequestMessage.externalEwsUrlSettingName);
                 if (flag)
                 {
                     GetDomainSettingsRequestMessage.AddSettingToResponse(domainResponse, setting2, GetDomainSettingsRequestMessage.externalEwsVersionSettingName);
                 }
                 callContext.Response.DomainResponses.Add(domainResponse);
             }
             return;
         }
     }
     callContext.Response.ErrorCode    = ErrorCode.InvalidRequest;
     callContext.Response.ErrorMessage = Strings.InvalidRequest;
 }