C# 读取每次调用或存储在静态变量中的环境变量?

C# 读取每次调用或存储在静态变量中的环境变量?,c#,azure,azure-functions,C#,Azure,Azure Functions,My azure函数正在从配置中读取信息。这些变量在初始启动后不会改变。在每次调用它们时轮询环境,还是将它们保存在静态变量中更好。例: public static class FooBar{ [FunctionName("FooBar")] public static async Task<IActionResult> Run( { var bar = Environment.GetEnvironmentVariable("

My azure函数正在从配置中读取信息。这些变量在初始启动后不会改变。在每次调用它们时轮询环境,还是将它们保存在静态变量中更好。例:

public static class FooBar{
   [FunctionName("FooBar")]
   public static async Task<IActionResult> Run(
   {
      var bar = Environment.GetEnvironmentVariable("bar");
      ...
       
公共静态类FooBar{
[函数名(“FooBar”)]
公共静态异步任务运行(
{
var bar=Environment.GetEnvironmentVariable(“bar”);
...

公共静态类FooBar{
静态字符串foo=Environment.GetEnvironmentVariable(“foo”);
[函数名(“FooBar”)]
公共静态异步任务运行(
{
...
是不是每次打电话给环境调查会更好, 或者将它们保存在静态变量中


如果需要,我建议您在转到函数逻辑之前将其保存在静态变量中。在函数逻辑中轮询环境变量没有意义,这是因为环境设置需要在azure上重新启动函数应用程序主机(在本地,您需要重新启动用于运行函数应用程序的工具)。因此,当然最好只调用一次,因为您不需要轮询。

使用配置扩展注入依赖项是一种方法。它在应用程序启动时读取配置,并且可以将配置对象传递给函数

当您更改设置时,它会重新启动应用程序,因此DI处理将获得新配置

使用Microsoft.Extensions.Configuration;
使用Microsoft.Extensions.Logging;
公共类MyFunction
{
专用只读IConfiguration\u config;
公共MyFunction(IConfiguration配置,ILogger记录器)
{
_config=config;
_记录器=记录器;
}
[函数名(“MyFunction”)]
公共异步任务运行([TimerTrigger(“0*/5****”)TimerInfo myTimer)
{
var item=_config[“SomeOption”];
}
}

默认情况下,环境变量会被带到配置系统中,因此您可以从配置中获取它们,您不需要使用GetEnvironmentVariable。检查此链接无需轮询,函数应用程序需要重新启动以更新环境变量,因此在转到函数逻辑之前使用静态变量是一种更好的方法。它只是n只有一次。
public static class FooBar{
   static string foo = Environment.GetEnvironmentVariable("foo");
   [FunctionName("FooBar")]
   public static async Task<IActionResult> Run(
   {
      ...