web-dev-qa-db-ja.com

VS 2017 Azure Function開発でlocal.settings.jsonから値を読み取ります

VS 2017でAzure機能の開発を行っています。いくつかのカスタム構成パラメーターをセットアップする必要があります。 Valuesの下のlocal.settings.jsonに追加しました。

{
   "IsEncrypted":false,
   "Values" : {
      "CustomUrl" : "www.google.com",
       "Keys": { 
           "Value1":"1",
           "Value2" :"2"
       }
   }
}

現在、ConfigurationManager.AppSettings["CustomUrl"]はnullを返します。

。Net Framework: 4.7

Microsoft.NET.Sdk.Functions: 1.0.5

System.Configuration.ConfigurationManager:4.4.0

Azure.Functions.Cli: 1.0.4

何か不足していますか?

14
Venky

まず、サンプルを作成し、local.settings.jsonデータを使用してテストを行います。Mikhailとahmelsayが言ったように、それは正常に動作します。

さらに、私の知る限り、Valuesコレクションはディクショナリであると予想されます。これに文字列以外の値が含まれていると、Azure関数がlocal.settings.jsonから値を読み取れなくなる可能性があります。

私のテスト:

ConfigurationManager.AppSettings["CustomUrl"]は、次のlocal.settings.jsonでnullを返します。

{
  "IsEncrypted": false,
  "Values": {
    "CustomUrl": "www.google.com",
    "testkey": {
      "name": "kname1",
      "value": "kval1"
    }
  }
}

enter image description here

10
Fei Han

Environment.GetEnvironmentVariable("key")

上記のコード行を使用してlocal.settings.jsonから値を読み取ることができました。

18
jayasurya_j

Azure関数はバイナリをbinフォルダーにコピーし、Azure関数cliを使用して実行するため、local.settings.jsonを検索するため、"Copy to Output Directory"から"Copy Always"

enter image description here

1

TimeTriggerベースのAzure関数を使用している場合、以下のようにAzure関数から(local.settings.jsonで作成された)キーにアクセスできます。

[FunctionName("BackupTableStorageFunction")]
public static void Run([TimerTrigger("%BackUpTableStorageTriggerTime%")]TimerInfo myTimer, TraceWriter log, CancellationToken cancellationToken)
0
Ashish Jain