private static void ConfigureCosmosDB(IServiceCollection services, IConfiguration configuration) { services.AddTransient <Func <string, CosmosDbSetting> >(serviceProvider => name => { var kvSetting = serviceProvider.GetRequiredService <KeyVaultSetting>(); var kvCert = CertUtil.FindCertificateByThumbprint(kvSetting.AuthCertThumbprint); var kvClient = new KeyVaultUtil(kvSetting.VaultName, kvSetting.AuthClientId, kvCert); switch (name) { case "graph": var graphDbKey = kvClient.GetSecret(kvSetting.GraphDbAuthKeySecretName).Result; var graphDbSetting = new CosmosDbSetting() { AccountName = configuration["graphDb:accountName"], DbName = configuration["graphDb:dbName"], CollectionName = configuration["graphDb:collectionName"], AuthKey = graphDbKey }; return(graphDbSetting); default: var docDbKey = kvClient.GetSecret(kvSetting.DocDbAuthKeySecretName).Result; var docDbSetting = new CosmosDbSetting() { AccountName = configuration["docDb:accountName"], DbName = configuration["docDb:dbName"], CollectionName = configuration["docDb:collectionName"], AuthKey = docDbKey }; return(docDbSetting); } }); }