2016-04-13 40 views
1

我正在查看是否有人知道任何方法簽名或方法過載,這些方法將允許我刪除我先前存在的憑證的硬編碼值, config.StorageAccount = CloudStorageAccount.Parse(CloudConfigurationManager.GetSetting("StorageConnectionString"));Azure .Net SDK - 支持{set;} for CloudStorageAccount的方法簽名

允許控制檯應用程序提示用戶輸入Username和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

謝謝Stephen。我使用了你的邏輯並修改了一下以適應我的需求。我在下面列出了我的代碼,再次感謝你!

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; 
    } 

我再從ApplicationStartFromUserOptions()connectionString和傳遞到我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; 
    } 

最後我我的控制檯應用程序內的StartConfig config = GetConfig(ApplicatonStartFromUserOptions(UserUI()));

調用這個內我 Main()所有