programing

로컬에서 값을 읽습니다.vs 2017 Azure Function 개발에서 settings.json을 소개합니다.

muds 2023. 4. 1. 10:06
반응형

로컬에서 값을 읽습니다.vs 2017 Azure Function 개발에서 settings.json을 소개합니다.

VS 2017에서 Azure 함수를 쓰고 있습니다.몇 가지 커스텀 설정 파라미터를 설정할 필요가 있습니다.추가했습니다.local.settings.json아래Values.

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

지금이다,ConfigurationManager.AppSettings["CustomUrl"]null을 반환합니다.

사용하고 있는 것:

  • .NET Framework 4.7
  • 마이크로소프트(MS.NET.Sdk기능 1.0.5
  • System. Configuration(System.Configuration Manager 4.4.0
  • 애저, 기능.CLI 1.0.4

내가 뭘 빼놓았나요?

Environment.GetEnvironmentVariable("key")

지역 가치를 읽을 수 있었다.settings.json을 클릭합니다.

먼저 샘플을 만들어 당신의 현지인과 테스트를 합니다.settings.json 데이터, 미하일과 ahmelsayed가 말했듯이, 그것은 잘 작동합니다.

게다가, 내가 아는 한,Values컬렉션은 사전이어야 합니다. 문자열이 아닌 값이 포함된 경우 Azure 함수가 로컬에서 값을 읽지 못할 수 있습니다.settings.json을 클릭합니다.

마이 테스트:

ConfigurationManager.AppSettings["CustomUrl"]다음 로컬과 함께 null을 반환합니다.settings.json을 클릭합니다.

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

여기에 이미지 설명 입력

TimeTrigger 기반 Azure 기능을 사용하는 경우 로컬에서 생성된 키에 액세스할 수 있습니다.settings.json)을 클릭합니다.

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

Azure 함수는 바이너리를 bin 폴더에 복사하고 azure 함수 cli를 사용하여 실행되므로 로컬을 검색합니다.settings.json, settings.json 이 설정되었는지 확인합니다."Copy to Output Directory"로."Copy Always"

여기에 이미지 설명 입력

(아마도 일부 이전 버전)을 사용하여IConfiguration함수의 생성자로 변환합니다.

public Function1(IConfiguration configuration)
{
    string setting = _configuration.GetValue<string>("MySetting");
}

MySetting에 있어야 합니다.Values의 단면local.settings.json:

{
  "IsEncrypted": false,
  "Values": {
    "AzureWebJobsStorage": "UseDevelopmentStorage=true",
    "FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated",
    "MySetting": "value"
  }
}

Azure Function App의 어플리케이션 설정에서도 동작합니다.

디버깅 중에는 속성을 읽을 수 있지만 디버깅을 진행하려고 하면 이러한 속성은 더 이상 작동하지 않습니다.Azure 함수는 중첩된 속성을 허용하지 않으므로 "Values" 옵션 또는 "ConnectionStrings"에서 모든 속성을 인라인으로 사용해야 합니다.이 문서를 참조해 주세요.https://learn.microsoft.com/en-us/azure/azure-functions/functions-how-to-use-azure-function-app-settings

var value = Environment.GetEnvironmentVariable("key", EnvironmentVariableTarget.Process);더 적절한 답변이 될 것입니다만,EnvironmentVariableTarget.Process디폴트값이지만 여기서 더 의미가 있습니다.

이것 좀 봐EnvironmentVariableTarget선언.

//
// Summary:
//     Specifies the location where an environment variable is stored or retrieved in
//     a set or get operation.
public enum EnvironmentVariableTarget
{
    //
    // Summary:
    //     The environment variable is stored or retrieved from the environment block associated
    //     with the current process.
    Process = 0,
    //
    // Summary:
    //     The environment variable is stored or retrieved from the HKEY_CURRENT_USER\Environment
    //     key in the Windows operating system registry. This value should be used on .NET
    //     implementations running on Windows systems only.
    User = 1,
    //
    // Summary:
    //     The environment variable is stored or retrieved from the HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session
    //     Manager\Environment key in the Windows operating system registry. This value
    //     should be used on .NET implementations running on Windows systems only.
    Machine = 2
}

언급URL : https://stackoverflow.com/questions/46714677/read-values-from-local-settings-json-in-vs-2017-azure-function-development

반응형