从 Azure 函数读取设置

Reading settings from a Azure Function

我是 Azure's function 的新手...我创建了一个新的计时器函数(将每 30 分钟触发一次)并且它必须对 URL 执行查询,然后将数据推送到缓冲区..

我完成了

public static void Run(TimerInfo myTimer, TraceWriter log)
{
 var s = CloudConfigurationManager.GetSetting("url");
 log.Info(s);
}

在我的功能设置中我

我做错了什么? 谢谢

您需要转到平台功能 -> 应用程序设置并将其添加到那里。

应用程序设置下添加设置。


读取设置可以通过首先在顶部添加:

using System.Configuration;

然后读取设置:

string setting = ConfigurationManager.AppSettings["url"];

其中 url 是您的设置键。 setting 变量将包含您的设置值。

请注意,对于 Azure Functions v2,这不再适用。 以下来自Jon Gallant's blog:

对于 Azure Functions v2,不支持 ConfigurationManager,您必须使用 ASP.NET 核心配置系统:

  1. 包括以下 using 语句:

    using Microsoft.Extensions.Configuration;
    
  2. 将 ExecutionContext 作为参数包含在内

    public static void Run(InboundMessage inboundMessage, 
        TraceWriter log,
        out string outboundMessage, 
        ExecutionContext context)
    
  3. 获取IConfiguration根目录

    var config = new ConfigurationBuilder()
        .SetBasePath(context.FunctionAppDirectory)
        .AddJsonFile("local.settings.json", optional: true, reloadOnChange: true)
        .AddEnvironmentVariables()
        .Build();
    
  4. 并用它来引用 AppSettings 键

    var password = config["password"]
    

在本地调试时,它从 "Values" 关键字下的 local.settings.json 获取设置。在 Azure 中 运行 时,它从“应用程序设置”选项卡获取设置。

您可以这样使用 System.Environment.GetEnvironmentVariable

var value = Environment.GetEnvironmentVariable("your_key_here")

只要您在本地或 Azure 上工作,就会获取设置。

推荐方式 — 使用环境变量读取设置

string Secret = System.Environment.GetEnvironmentVariable("Secret");

如果您从本地 PC 或使用 C#

的 Azure Functions 运行,这将非常有效

您不必再执行第 3 步。只需在 Startup.cs 中执行以下操作 `

Startup.cs

public IConfiguration Configuration { get; }

public Startup() { }

public Startup(IConfiguration configuration)
{
    Configuration = configuration;
}

然后在你的代码文件中使用 DI:

` YourCode.cs

public class SomeWorker : ISomeWorker
{
    private readonly IConfiguration _configuration;

    public SomeWorker(IConfiguration configuration)
    {            
        _configuration = configuration;
    }
    
    public void bool ForKicks()
    {
        // Get Value
        var val = _configuration["SomeValueInLocalSettingsJsonFile"];
    }
    
    // Other code here...
}