// 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); }
public GetDomainSettingsResponseMessage GetDomainSettings(GetDomainSettingsRequestMessage message) { return(this.Execute <GetDomainSettingsResponseMessage>(message)); }
// 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; }