in src/Microsoft.Extensions.Configuration.AzureAppConfiguration/ConfigurationClientManager.cs [54:88]
public ConfigurationClientManager(
IEnumerable<string> connectionStrings,
ConfigurationClientOptions clientOptions,
bool replicaDiscoveryEnabled,
bool loadBalancingEnabled)
{
if (connectionStrings == null || !connectionStrings.Any())
{
throw new ArgumentNullException(nameof(connectionStrings));
}
string connectionString = connectionStrings.First();
_endpoint = new Uri(ConnectionStringUtils.Parse(connectionString, ConnectionStringUtils.EndpointSection));
_secret = ConnectionStringUtils.Parse(connectionString, ConnectionStringUtils.SecretSection);
_id = ConnectionStringUtils.Parse(connectionString, ConnectionStringUtils.IdSection);
_clientOptions = clientOptions;
_replicaDiscoveryEnabled = replicaDiscoveryEnabled;
// If load balancing is enabled, shuffle the passed in connection strings to randomize the endpoint used on startup
if (loadBalancingEnabled)
{
connectionStrings = connectionStrings.ToList().Shuffle();
}
_validDomain = GetValidDomain(_endpoint);
_srvLookupClient = new SrvLookupClient();
_clients = connectionStrings
.Select(cs =>
{
var endpoint = new Uri(ConnectionStringUtils.Parse(cs, ConnectionStringUtils.EndpointSection));
return new ConfigurationClientWrapper(endpoint, new ConfigurationClient(cs, _clientOptions));
})
.ToList();
}