如何在Azure Function中访问本地应用设置

时间:2018-08-21 07:28:04

标签: c# azure configuration azure-functions

我真的很难找到如何从Azure函数中创建的实例访问应用程序设置。

我有以下代码...

namespace ThingServiceFunctionApp
{    
    public static class RoleFunctions
    {
        [FunctionName("GetThings")]
        public static async Task<IActionResult> Run([HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "roles")]HttpRequest req, ILogger log)
        {
            return await FunctionApp.GetFunction<IGetThingsFunction>().RunAsync(req, log).ConfigureAwait(false);
        }


    public static class FunctionApp
    {
        private static readonly IFunctionFactory FuncFactory = new FunctionFactory(new Startup());

        public static IFunction GetFunction<TFunction>() where TFunction : IFunction
        {
            return FuncFactory.Create<TFunction>();
        }
    }


     public class Startup : IStartup
     {

          private IConfiguration Configuration { get; }

          public Startup()
          {
              Configuration = new ConfigurationBuilder()
                  .SetBasePath(Directory.GetCurrentDirectory())
                  .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
                  .AddEnvironmentVariables()
                  .Build();
          }


          public IServiceCollection ConfigureServices(IServiceCollection services)
          {
              services
                  .AddSingleton<IThingService, ThingService>()
                  .AddTransient<IGetThingsFunction, GetThings>();

              return services;
          } 
        }
      }
  }

如何从ThingService或GetThings函数的Configuration中访问值?

不相关,但是仅供参考,我已经添加了对DI的支持(代码未显示)-因此,.AddSingleton等。

谢谢!

2 个答案:

答案 0 :(得分:1)

在我们的项目中,我们将变量从本地配置文件添加到Azure门户中的“应用程序设置”中。

像这样创建对象:new ConfigurationBuilder()。AddEnvironmentVariables()。Build();

然后像往常一样检索它们,即Configuration [“ Key”];

答案 1 :(得分:1)

要访问Azure Function中的本地应用程序设置(无论是在Azure上还是在本地调试中),我们可以执行以下操作:

public static string GetEnvironmentVariable(string name)
{
    return name + ": " +
        System.Environment.GetEnvironmentVariable(name, EnvironmentVariableTarget.Process);
}

更多信息供您参考:Environment variables