发布azure函数并使用appsettings.json

时间:2017-08-14 12:15:37

标签: azure azure-functions

我有一个Azure Functions项目,我在C#中使用Visual Studio 2017 15.3预览编写。函数项目包含两个单独的函数,这两个函数都是定时器触发的。我有一些appsettings,我在appsettings.json文件中指定,该文件设置为复制到构建时的输出目录。

当我发布Azure Functions项目时,这两个功能将显示在Azure门户中,但是由于无法访问应用程序设置,因此会失败。现在我知道我可以在应用程序设置刀片中指定设置,但我想使用appsettings.json,这应该可以根据这个github问题:https://github.com/Azure/azure-functions-cli/issues/33

此SO答案包含有关使其正常运行的一些信息Azure Functions - using appsettings.json。现在问题出在" Azure将尝试在appsettings.json文件中查找您正在处理的函数的根文件夹。"我的函数项目包含以下文件结构:

-appsettings.json
-Function_function1.cs
-Function_function2.cs
-host.json

构建和部署项目时,我最终得到了wwwroot中每个函数的文件夹,每个函数都包含一个function.json文件。 appsettings.json文件进入wwwroot / bin文件夹,函数无法访问它。

我想也许如果我将函数项目更改为具有文件夹结构,它将部署appsettings.json,我将其更改为以下

-host.json
-Function_function1\
--Function_function1.cs
--appsettings.json
-Function_function2\
--Function_function2.cs
--appsettings.json

这没有我预期的结果,此时我不太清楚我需要做什么才能将appsettings复制到wwwroot而不是bin文件夹下的功能文件夹中,任何指导都将不胜感激。

2 个答案:

答案 0 :(得分:4)

您所指的SO帖子包含已弃用的信息。 appsettings.json已不再使用。

对于本地开发,您可以使用local.settings.json文件,但函数应用程序中未使用此文件。我刚刚完成测试并验证了这一说法。

您可以在发布功能时使用--publish-local-settings标记,以便在功能应用中获取设置。不过,这当然不是你想要的。

我自己也在寻找一种不涉及创建ARM模板的解决方案,但我感觉目前这是不可能的。 您当然可以编写自己的PowerShell脚本并以这种方式设置应用程序设置,但情况更糟。

可能不是你想要的答案,但它是最好的(目前)。

答案 1 :(得分:2)

在Azure Functions中,设置存储在local.setting.json中(如果您的解决方案中不存在此文件,则创建该文件,名称应与所提及的完全相同)。

sample local.settings.json正文,

{
  "IsEncrypted": false,
  "Values": {
    "email": "email@server.com",
    "pass": "pass"
  },
  "ConnectionStrings": {
    "SqlConnectionString": "server=jongdb;user=jong;"
  }
}

一旦添加设置文件,就必须在下面提到的Run()方法下对其进行配置,

enter image description here

var config = new ConfigurationBuilder().SetBasePath(context.FunctionAppDirectory)
                .AddJsonFile("local.settings.json", optional: false, reloadOnChange: true).AddEnvironmentVariables().Build();

访问设置时,在下方使用

IConfigurationRoot config;
config["fromEmail"];

使用以下命令发布设置

func azure functionapp publish *YourAppName* --publish-local-settings -i

一旦部署完成,您将在Azure门户的“功能”中的“应用程序设置”下查看设置(请参见下图)

enter image description here

必填, 您的计算机中需要安装Azure CLI,

Download