C# Azure功能的每环境配置?

C# Azure功能的每环境配置?,c#,azure,azure-functions,serverless,C#,Azure,Azure Functions,Serverless,对于本地开发,我可以不用做Environment.GetEnvironmentVariable(“ApiKey”),在我的local.settings.json文件中,我会有一个json属性ApiKey:“abc123” 但当我从VisualStudio或Azure管道将我的函数发布到暂存或生产中时。他们应该根据环境读取配置值,还应该从KeyVault读取一些配置值 我曾与领事在prem安装方面进行过合作,这是轻而易举的事。我不确定在Azure的情况下什么是正确的方法。使用带有环境标签的Azur

对于本地开发,我可以不用做
Environment.GetEnvironmentVariable(“ApiKey”)
,在我的
local.settings.json
文件中,我会有一个json属性
ApiKey:“abc123”

但当我从VisualStudio或Azure管道将我的函数发布到暂存或生产中时。他们应该根据环境读取配置值,还应该从KeyVault读取一些配置值

我曾与领事在prem安装方面进行过合作,这是轻而易举的事。我不确定在Azure的情况下什么是正确的方法。使用带有环境标签的Azure应用程序配置服务,或进入每个功能实例,手动添加配置,并使用KeyVault映射一些配置?

host.json 你不需要使用钥匙库来存储这些秘密。 在Azure门户中打开你的功能应用程序,然后

Settings -> Application Settings -> New Application Setting
你在哪里填写

Name: ApiKey
Value: thankscasper
你可以像在本地一样访问它们

钥匙库 如果确实要使用KeyVault,请为功能应用程序设置系统分配的托管标识

根据KeyVault的访问策略为托管标识授予密钥获取权限

如果存储的机密名为
X
,则您可以使用

Environment.GetEnvironmentVariable("X", EnvironmentVariableTarget.Process);

谢谢你的回答。对于第一个解决方案,我不希望每次部署新功能时都手动输入配置。也可以有多个函数使用某个配置。因此,理想情况下,不应为多个函数部署复制相同的配置。@Ibrahim,在上载新版本的函数应用程序后,该设置将保留在那里。此外,您还可以使用
高级编辑
选项复制粘贴您的
主机.json
文件。如果多个功能应用程序使用相同的设置,最好将它们放在vault中:)我的答案对您有帮助吗,或者还有其他问题吗?