2017-07-09 30 views
0

hereのように、私のAzure関数のアプリケーション設定を保存するのにlocal.settings.jsonファイルを使用しています。私はConfigurationManager.ApplicationSettings["someValue"]またはConfigurationManager.ConnectionStrings["SQLConnectionString"]を使用して接続文字列を使用して、次の例Azure関数 - 設定ファイルに配列を挿入する方法

{ 
    "IsEncrypted": false, 
    "Values": { 
    "AzureWebJobsStorage": "", 
    "AzureWebJobsDashboard": "" 
    }, 
    "ConnectionStrings": { 
    "SQLConnectionString": "myConnectionString" 
    } 
} 

にアプリケーション設定の値にアクセスすることができます。しかし 、私は値の一つとして配列を挿入しよう:

{ 
    "IsEncrypted": false, 
    "Values": { 
    "AzureWebJobsStorage": "", 
    "AzureWebJobsDashboard": "", 
    "myArray": [ 
     { 
     "key1": "value1", 
     "key2": "value2" 
     }, 
     { 
     "key1": "value3", 
     "key2": "value4" 
     } 
    ] 
    }, 
    "ConnectionStrings": { 
    "SQLConnectionString": "myConnectionString" 
    } 
} 

私は(私は、接続文字列にアクセスしようとすると、たとえば、)例外を取得を開始。だから私の推測では、私は配列の正しい形式を使用していないです。 配列はlocal.settings.jsonファイルで使用できますか?可能であれば、正しいフォーマットは何ですか?

答えて

0

azure関数のソースコードAzure.Functions.Cli/Common/SecretsManager.csによれば、LocalSettings.jsonファイルから設定を読み取るAppSettingsFileクラスがあります。

AppSettingsFileクラスの一部:

 public AppSettingsFile(string filePath) 
     { 
      _filePath = filePath; 
      try 
      { 
       var content = FileSystemHelpers.ReadAllTextFromFile(_filePath); 
       var appSettings = JsonConvert.DeserializeObject<AppSettingsFile>(content); 
       IsEncrypted = appSettings.IsEncrypted; 
       Values = appSettings.Values; 
       ConnectionStrings = appSettings.ConnectionStrings; 
       Host = appSettings.Host; 
      } 
      catch 
      { 
       Values = new Dictionary<string, string>(); 
       ConnectionStrings = new Dictionary<string, string>(); 
       IsEncrypted = true; 
      } 
     } 

     public bool IsEncrypted { get; set; } 
     public Dictionary<string, string> Values { get; set; } = new Dictionary<string, string>(); 
     public Dictionary<string, string> ConnectionStrings { get; set; } = new Dictionary<string, string>(); 

コードによれば、AppSettingsオブジェクトにJSONファイルを変換するJsonConvert.DeserializeObjectメソッドを使用。

ただし、appSettings.Valuesプロパティはディレクトリタイプであり、配列をサポートしていません。だから私はあなたが設定として配列を使用することをお勧めしません。

私はあなたが2つの文字列の値として配列を変換しようとすることができますお勧めします。これはうまくいくでしょう。このよう

{ 
    "IsEncrypted": false, 
    "Values": { 
    "AzureWebJobsStorage": "", 
    "AzureWebJobsDashboard": "", 
    "arrary1-key1": "value1", 
    "arrary1-key2": "value2", 
    "arrary2-key1": "value3", 
    "arrary2-key2": "value4" 
    }, 
    "ConnectionStrings": { 
    "SQLConnectionString": "myConnectionString" 
    } 
} 
関連する問題