protected async Task <AzureDefaults> LoadDefaultsFromAzure(Datacenter dc, string databaseConnectionString = null, string storageConnectionString = null) { bool expired = false; try { if (String.IsNullOrWhiteSpace(databaseConnectionString) || String.IsNullOrWhiteSpace(storageConnectionString)) { var config = await LoadServiceConfig(dc, dc.GetService("work")); databaseConnectionString = databaseConnectionString ?? GetValueOrDefault(config, "Sql.Legacy"); storageConnectionString = storageConnectionString ?? GetValueOrDefault(config, "Storage.Legacy"); } if (String.IsNullOrWhiteSpace(databaseConnectionString) || String.IsNullOrWhiteSpace(storageConnectionString)) { throw new InvalidOperationException(Strings.Command_MissingEnvironmentArguments); } await Console.WriteInfoLine( Strings.Command_ConnectionInfo, new SqlConnectionStringBuilder(databaseConnectionString).DataSource, CloudStorageAccount.Parse(storageConnectionString).Credentials.AccountName); } catch (CloudException ex) { if (ex.ErrorCode == "AuthenticationFailed") { expired = true; } else { throw; } } if (expired) { await Console.WriteErrorLine(Strings.AzureCommandBase_TokenExpired); throw new OperationCanceledException(); } return(new AzureDefaults { DatabaseConnectionString = databaseConnectionString, StorageConnectionString = storageConnectionString }); }