我正在尝试在本地测试Azure功能时读取环境变量(使用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)与(1.0.13)-当前项目(无效)正在使用1.0.19-所以我降级为1.0 .13-但没有区别!
更新:2018年9月9日-特别感谢Karishma Tiwari指导我朝着正确的方向前进:
问题是(如Karismha所指出的),没有将local.settings.json文件复制到输出路径,如下图所示,通过比较不起作用的项目(左侧)和工作(右):
解决:
要注意的另一点是,MS文档指出:
“ ...,但我们建议您使用GetEnvironmentVariable ...”,
问题解决了。
我建议尝试以下方法:
首先,尝试使用ConfigurationManager.AppSettings["test"]
System.Environment.GetEnvironmentVariable(“ test”)代替,并检查是否获得了预期的结果。
确保将local.settings.json文件标记为始终复制到构建输出。(通过在Visual Studio中右键单击它)。这会将您的文件复制到类似于bin \ debug的输出路径。
让我知道您是否仍然遇到相同的问题。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句