Example #1
0
 public FunctionWithWrapper(IFunctionWrapper wrapper, FunctionEnvironment functionEnvironment, IOptions <MyConfiguration> myConfiguration, IOptions <MyOtherConfiguration> myOtherConfiguration)
 {
     _wrapper              = wrapper;
     _functionEnvironment  = functionEnvironment;
     _myConfiguration      = myConfiguration.Value;
     _myOtherConfiguration = myOtherConfiguration.Value;
 }
Example #2
0
        public void Configure(IWebJobsBuilder builder)
        {
            builder.Services.AddOptions <MyConfiguration>()
            .Configure <IConfiguration>((myConfiguration, configuration) =>
            {
                configuration.Bind(myConfiguration);
            });

            builder.Services.AddTransient <IFunctionWrapper, FunctionWrapper>();

            // https://github.com/Azure/azure-functions-dotnet-extensions/issues/17#issuecomment-499086297
            var executionContextOptions = builder.Services.BuildServiceProvider()
                                          .GetService <IOptions <ExecutionContextOptions> >().Value;

            var functionEnvironment = new FunctionEnvironment()
            {
                WebSiteHostName = Environment.GetEnvironmentVariable("WEBSITE_HOSTNAME"),
                EnvironmentName = Environment.GetEnvironmentVariable("AZURE_FUNCTIONS_ENVIRONMENT"),
                AppDirectory    = executionContextOptions.AppDirectory
            };

            functionEnvironment.EnsureHasEnvironment();

            builder.Services.AddSingleton(functionEnvironment);

            functionEnvironment.IfDevelopment(() =>
            {
                // do something...
            });

            var configurationBuilder = new ConfigurationBuilder()
                                       .SetBasePath(executionContextOptions.AppDirectory)
                                       .AddJsonFile("appsettings.json", optional: false, reloadOnChange: false)
                                       .AddJsonFile($"appsettings.{functionEnvironment.EnvironmentName}.json", optional: true, reloadOnChange: false)
                                       .AddUserSecrets(Assembly.GetExecutingAssembly(), optional: true);

            var configuration = configurationBuilder.Build();

            builder.Services.Configure <MyOtherConfiguration>(configuration.GetSection("myOtherConfiguration"));
        }