2016-04-13 3 views
1

Я ищу, чтобы узнать, знает ли кто-нибудь какие-либо сигнатуры методов или перегрузки методов, которые позволили бы мне удалить ранее существовавшее жестко закодированное значение для учетных данных, config.StorageAccount = CloudStorageAccount.Parse(CloudConfigurationManager.GetSetting("StorageConnectionString"));.Azure .Net SDK - сигнатуры методов, которые позволяют {set;} для CloudStorageAccount

Позволяет консольному приложению запрашивать пользователя для имени пользователя и AccessToken, который затем может быть передан обратно в «CloudStorageAccount».

ответ

1

CloudStorageAccount.Parse должен работать, если вы берете вход пользователя и строят строку соединения.

static void Main(string[] args) 
     { 
      var connectionString = $"DefaultEndpointsProtocol=https;AccountName={args[0]};AccountKey={args[1]}"; 
      var storageAccount = CloudStorageAccount.Parse(connectionString); 
1

Как говорится в настройках проекта, параметры конфигурации могут быть доступны программно и динамически обновляться.

enter image description here

Вам просто нужно объявить строковую переменную, которая будет содержать протокол конечной точки по умолчанию, имя учетной записи для хранения, и ключ доступа для хранения, а затем использовать CloudStorageAccount.Parse создать CloudStorageAccount, так же, как код @Stephen Макдауэлл ,

1

Спасибо Стивен. Я использовал вашу логику и изменил ее, чтобы соответствовать моим потребностям. Я включил свой код ниже, еще раз спасибо!

UserUI()

public static List<string> UserUI() 
    { 
     List<string> accessCredentials = new List<string>(); 

     Console.WriteLine("Account Name: "); 
     string accountName = Console.ReadLine(); 
     accessCredentials.Add(accountName); 

     Console.WriteLine("Account Key: "); 
     string accountKey = Console.ReadLine(); 
     accessCredentials.Add(accountKey); 


     return accessCredentials; 
    } 

ApplicationStartFromUserOptions()

public static string ApplicatonStartFromUserOptions(List<string> accessCredentials) 
    { 
     var connectionString = $"DefaultEndpointsProtocol=https;AccountName={accessCredentials[0]};AccountKey={accessCredentials[1]}"; 

     return connectionString; 
    } 

Я тогда взять connectionString из ApplicationStartFromUserOptions() и передать, что в моей GetConfig(), который обрабатывает большую часть тяжелой работы.

GetConfig()

public static StartConfig GetConfig(string connectionString) 
    { 
     var config = new StartConfig(); 

     // Retrieve storage account from connection string. 
     config.StorageAccount = CloudStorageAccount.Parse(connectionString); 

     // Create the blob object. 
     config.BlobClient = config.StorageAccount.CreateCloudBlobClient(); 

     config.ListContainerData = ListContainer(config); 

     foreach (var item in config.ListContainerData.Item2) 
     { 
      config.Container = config.BlobClient.GetContainerReference(item); 
      ShowSasTokenForContainer(config); 

     } 

     //Create the container if it does not exisit. 
     config.Container.CreateIfNotExists(); 

     return config; 
    } 

Наконец я называю это все в моей Main() в моей консольного приложения с StartConfig config = GetConfig(ApplicatonStartFromUserOptions(UserUI()));