2016-04-18 25 views
3

因此,我解析Azure存儲帳戶的連接字符串,當我到達使用連接字符串的應用程序頁面時,編譯器會捕獲一個異常,指出「設置必須是表單「名稱=值」。設置必須採用「name = value」格式。不知道該怎麼做

這是否意味着我應該糾正在我設定的appSettings?如果是的話,你可以馬上當場有毛病我的格式,將導致此異常app.config文件的東西嗎?

<?xml version="1.0" encoding="utf-8"?> 
    <configuration> 
     <appSettings> 
      <add key="StorageConnectionString" value="DefaultEndpointsProtocol=https;AccountName=myaccount;AccountKey=mykey" /> 
     <appSettings> 
    </configuration> 

下面是創建CloudStorage對象實例的代碼:

CloudStorageAccount storageaccount = CloudStorageAccount.Parse ("StorageConnectionString"); 

     CloudTableClient tableClient = storageaccount.CreateCloudTableClient(); 

     CloudTable austinBowlingAthletes = tableClient.GetTableReference ("austinBowlingAthletesTable"); 
+1

可能要考慮從您的代碼中刪除您的AccountKey ... –

+5

**立即更改您的帳戶密鑰**我編輯了帳戶名稱和密鑰,但具有足夠代表的人可以看到編輯歷史。 –

+2

oops。我是一個白癡 –

回答

0

您遇到此錯誤的原因是您要求CloudStorageAccount.Parse方法從字面上解析"StorageConnectionString"字符串,而不是存儲在app.config文件中的此設置的值。你需要做的是從配置文件中讀取這個設置的值。例如,在一個控制檯應用程序,我會做這樣的事情:

  var appSettingsReader = new AppSettingsReader(); 
     var connectionString = (string) appSettingsReader.GetValue("StorageConnectionString", typeof(string)); 
     CloudStorageAccount storageaccount = CloudStorageAccount.Parse(connectionString); 

我不得不添加的引用爲System.Configuration裝配這樣做。

1

"StorageConnectionString"應在以下格式:

DefaultEndpointsProtocol=[http|https];AccountName=<YourAccountName>;AccountKey=<YourAccountKey>'描述here

此外,使用CloudConfigurationManager獲取您的連接字符串:

string connectionString = CloudConfigurationManager.GetSetting("StorageConnectionString");

這給出了額外的好處當您的應用在本地運行時使用app.config/web.config,或者在運行時在azure中訪問您的應用設置雲。請參閱this link

然後,您應該可以解析連接字符串,並且可以不必修改開發&生產環境之間的app.config/web.config設置。

3

添加對System.Configuration.dll的引用,並在該文件中添加using System.Configuration;

那麼你的第一行改成這樣:

CloudStorageAccount storageaccount = CloudStorageAccount.Parse(ConfigurationManager.AppSettings["StorageConnectionString"]); 

你需要得到的價值,而不是僅僅通過鍵來解析。

相關問題