【发布时间】:2019-02-11 03:09:53
【问题描述】:
我在本地测试 Azure Functions 时尝试读取环境变量(使用 v1 .Net 4.7.1)
下面是功能代码:
[FunctionName( "test" )]
public static async Task<HttpResponseMessage> Run( [HttpTrigger( AuthorizationLevel.Anonymous, "post", Route = null )]HttpRequestMessage req, TraceWriter log )
{
String s;
log.Info( "test: Begin..." );
s = System.Environment.GetEnvironmentVariable( "test" );
if ( String.IsNullOrEmpty( s ) )
{
log.Info( "Unable to get environment key !!!!" );
}
else
{
log.Info( "Key value = " + s );
}
}
local.settings.json 文件包含:
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "UseDevelopmentStorage=true",
"AzureWebJobsDashboard": "UseDevelopmentStorage=true",
"test": "test_value"
}
}
函数编译运行,但永远不会返回环境键值,日志中始终包含:
Unable to get environment key !!!!
奇怪的是我有另一个项目(与上面的代码相同),它工作得很好。程序集的唯一区别是 Microsoft.Net.Sdk.Functions DLL (1.0.19) vs (1.0.13)——当前项目(不起作用)使用的是 1.0.19——所以我降级到 1.0 .13 - 但它没有任何区别!
更新:2018 年 9 月 9 日 - 特别感谢 Karishma Tiwari 引导我走向正确的方向:
问题是(正如 Karismha 指出的那样)local.settings.json 文件没有被复制到输出路径,如下所示,通过比较项目中不起作用的设置(左侧)和正在运行的项目(右):
解决:
- 右击local.settings.json -> 属性
- 将“复制到输出目录”设置更改为:“如果较新则复制”
还有一点需要注意的是MS documentation states 声明:
"...但我们建议您使用 GetEnvironmentVariable ...",
问题解决了。
【问题讨论】:
标签: azure-functions