首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Azure函数local.settings.json文件中包含更复杂的配置JSON数据?

如何在Azure函数local.settings.json文件中包含更复杂的配置JSON数据?
EN

Stack Overflow用户
提问于 2018-11-23 19:16:26
回答 1查看 437关注 0票数 0

我正在使用Azure函数2

我正在阅读Azure函数本地设置文件文档:

https://learn.microsoft.com/en-us/azure/azure-functions/functions-run-local#local-settings-file

对于每个文档,下面是local.settings.json文件的一个示例:

代码语言:javascript
复制
{
  "IsEncrypted": false,
  "Values": {
    "FUNCTIONS_WORKER_RUNTIME": "<language worker>",
    "AzureWebJobsStorage": "<connection-string>",
    "AzureWebJobsDashboard": "<connection-string>",
    "MyBindingConnection": "<binding-connection-string>"
  },
  "Host": {
    "LocalHttpPort": 7071,
    "CORS": "*"
  },
  "ConnectionStrings": {
    "SQLConnectionString": "<sqlclient-connection-string>"
  }
}

据我所知,“”中的项将通过环境变量(如Environment.GetEnvironmentVariable )获得。

我需要在函数的设置中包括更复杂的设置(嵌套的JSON数据及其数组)。

最好的做法或推荐的做法是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-24 03:48:47

Values集合应该是一个Dictionary<string, string>,因此我们不能将嵌套的JSON数据和数组放在里面。尝试为您的Json数据创建一个新的部分,并像往常一样读取Json文件。我们不能使用Environment.GetEnvironmentVariable,因为定制设置没有导入到环境变量中。

代码语言:javascript
复制
{
  "Values": {},
  "CustomSettings":{}
}

ExecutionContext context添加到函数方法签名以定位设置文件。

代码语言:javascript
复制
var reader = new StreamReader(context.FunctionAppDirectory+"/local.settings.json");
var myJson = reader.ReadToEnd();

对于v2函数,我们可以使用ConfigurationBuilder

代码语言:javascript
复制
var config = new ConfigurationBuilder()
    .SetBasePath(context.FunctionAppDirectory)
    .AddJsonFile("local.settings.json", optional: false, reloadOnChange: true)
    .AddEnvironmentVariables()
    .Build();

local.settings.json旨在为本地开发人员提供与Azure门户相同的应用程序设置,默认情况下它不会发布到Azure。要发布它,右键单击project> Edit <functionappname>.csproj并删除<CopyToPublishDirectory>Never</CopyToPublishDirectory>

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53451937

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档