2016-11-23 59 views
6

是否可以在Azure函数中使用appsettings.json文件?Azure函数 - 使用appsettings.json

没有为这里的环境变量文件..

https://docs.microsoft.com/en-us/azure/azure-functions/functions-reference-csharp#environment-variables

..however我们使用八达通部署和真的想有AppSettings的版本控制。

我们已经使用

{ 
    "frameworks": { 
    "net46": { 
     "dependencies": { 
     "Microsoft.Extensions.Configuration": "1.0.0", 
     "Microsoft.Extensions.Configuration.Json": "1.0.0" 
     } 
    } 
    } 
} 

但试图不断得到

2016-11-23T15:27:03.811(12,16):错误CS0012:类型 '对象' 是在装配定义没有被引用。您必须添加对组件的引用'System.Runtime版本= 4.0.0.0

即使能够通过Octopus提供/更新环境变量也足以满足我们的需求。

请指教。

回答

2

只有环境变量支持应用程序设置和连接字符串。不支持appsettings.json

但是,您可以使用Azure资源管理器(ARM)模板来配置Function App的设置。这是一个blog post,更详细地描述这一点。

+0

太棒了!这将做得非常好 - 谢谢! – Nosmadas

+0

@mathewc - 在Azure函数的新预览工具中,当我创建一个Functions项目时,它会自动创建一个appsettings.json文件。自你的答案出现以后有什么变化? –

+2

该设置文件仅用于本地开发,由我们的CLI使用。有一篇博客文章[这里](https://blogs.msdn.microsoft.com/appserviceteam/2016/12/01/running-azure-functions-locally-with-the-cli/)更详细地描述。 – mathewc

0

对于依赖关系,您应该在函数中使用/创建project.json。在那里你可以指定你的依赖关系。 请检查: https://docs.microsoft.com/en-us/azure/azure-functions/functions-reference-csharp#package-management

例如:

{ 
 
    "frameworks": { 
 
    "net46":{ 
 
     "dependencies": { 
 
     "Microsoft.ProjectOxford.Face": "1.1.0" 
 
     } 
 
    } 
 
    } 
 
}

+0

问题是关于appsettings.json,而不是project.json文件,您需要指定nuget依赖关系 –

+0

您不指定appsettings.json中的依赖项,这就是您拥有project.json的原因。检查: https://docs.microsoft.com/en-us/azure/azure-functions/functions-reference-csharp#package-management –

+1

我明白,但原来的问题是关于appsettings.json,而不是软件包依赖关系--OP正尝试将他的环境设置和连接存储在文件中,而不是在Azure中的Web应用程序设置中。 –

7

适合您需要的答案是肯定的! Azure功能可以使用appsettings.json用于您的配置。但是当请求函数时,Azure会执行一些排序顺序。

1°)天青将寻找KEYS您在.GetEnvironmentVariables(用 “[KEY]”)方法,通过对应用程序设置已配置的键中天青功能刮板设定

2º)如果Azure无法通过“应用程序设置”键找到这些配置,Azure将尝试将appsettings.json文件查找到您正在使用的函数的根文件夹中。

3º)最后,如果Azure无法在Appsettings.json文件上的应用程序设置中找到此键,则Azure将执行最后一次尝试找出web.config以查找此文件appsettings部分键。

对你的欣赏,你就能够找到我的github回购这些配置由样本:herehere

我希望这些信息帮助你。

+0

听起来不错,但是它只有单个键/值对吗?我可以像从“ConfigurationBuilder”中获得复杂对象吗? – nhwilly

+0

是的,你可以!只要把你的配置像这样: ** SectionA **:SubSectionA1:SubSectionA11:“你的价值在这里”。在应用程序设置密钥字段。这个“BIG”字符串是JSON约定。 使用appsettings.json只是创建自己的配置的一种方法,而不是最后一种。您可以在功能门户上使用**应用程序设置**。 另一种可以尝试的方式是Azure密钥保管库。 –

+0

我不确定这是如何工作的,但我会捣鼓它。谢谢... – nhwilly

7

根据对配置文件所做的更改,你应该只使用local.settings.json因为appsettings.json更名为local.settings.json

参考的变化: azure-functions-cli