2017-08-14 72 views
2

我有一个Azure函数项目,我使用Visual Studio 2017 15.3预览在C#中编写的。函数项目包含两个独立函数,这两个函数都是定时器触发的。我在appsettings.json文件中指定了一些appsettings,该文件设置为Copy to build上的输出目录。发布azure函数和使用appsettings.json

当我发布Azure函数项目时,这两个函数将显示在Azure门户中,但由于它们无法访问应用程序设置,因此它们会失败。现在我知道我可以在设置刀片应用specifiy设置,但我想用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文件夹中,任何指导都将不胜感激。

回答

4

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

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

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

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

可能不是你正在寻找的答案,但它是最好的(目前)。

+1

我相信这是正确的 - 我们沿着这条道路走下去,使用ARM模板填充我们的功能应用程序的应用程序设置。 然后设置VSTS构建来更新这些应用程序,因为我们将更改更改为实际功能的代码。它对我们来说已经足够好了 - 但是同意一个替代方案会很好,所以很想听听有没有一个。 –

+1

很遗憾,事情已经改变,它不会自动使用appsettings.json。您应该能够做到的另一种方法是使用Azure Powershell命令行程序“Set-Azure Website”并设置-appsettings,然后这将存储您在标准应用程序设置部分中指定的设置,尽管连接了set-azurewebsite拿起appsettings.json需要更多的工作。 – ObiEff

+1

下面是一个GitHub功能请求,您可以分享有关更简单的方式来管理功能应用程序设置的意见:** https://github.com/Azure/azure-functions-cli/issues/339** 这是一个继续前面对Azure函数CLI的更新,它使我们能够仅部署_only_设置(而不是二进制文件):https://github.com/Azure/azure-functions-cli/issues/157 –