Tar*_*rek 7 .net c# environment-variables azure azure-functions
在微软的文档指出,
在本地开发和在Azure中运行时,可以从环境变量中读取应用程序设置.在本地开发时,应用程序设置来自local.settings.json文件中的Values集合.在本地和Azure环境中,GetEnvironmentVariable("")检索指定应用程序设置的值.例如,当您在本地运行时,如果您的local.settings.json文件包含{"Values":{"WEBSITE_SITE_NAME":"我的站点名称"}},则会返回"我的站点名称".
System.Configuration.ConfigurationManager.AppSettings属性是获取应用程序设置值的备用API,但我们建议您使用此处所示的GetEnvironmentVariable.
没有说明为什么它是推荐的方式.
或者我只是接受这个作为生活中的事实而不知道为什么?
它有性能优势吗?
我会说一般它是基于我的测试。GetEnvironmentVariable比ConfigurationManager在我的电脑上(100k 次)快一点,它的平均执行时间大约短 20?s,而在 Azure(B1 应用服务计划,10k 次)上大约短 12?s。这是一个统计结论,ConfigurationManager有时可能会更快。
是否存在从 AppSettings 读取会导致空值的实例?
如果要读取的值按预期设置,则可能只有一种情况我们使用ConfigurationManager--In v2 函数得到 null ,在这种情况下它不再有用。
是否只是为了兼容不同的配置格式(即 json、xml 等)?
GetEnvironmentVariable没有这样的能力,也没有格式兼容性的要求。Azure 函数在本地开发中从 local.settings.json 中获取配置是有意设计的,当函数宿主启动时,将应用程序设置Values导入到当前进程的环境变量中。所以没有格式考虑。
总结一下,GetEnvironmentVariable是
System.Configuration即可使用 ConfigurationManager。ConnectionStrings在 local.settings.json 中)。当然,我们仍然可以利用ConfigurationManagerv1 函数,如果我们想在ConnectionStrings本地获取,我们必须使用它。
| 归档时间: |
|
| 查看次数: |
1124 次 |
| 最近记录: |