public FunctionWithWrapper(IFunctionWrapper wrapper, FunctionEnvironment functionEnvironment, IOptions <MyConfiguration> myConfiguration, IOptions <MyOtherConfiguration> myOtherConfiguration) { _wrapper = wrapper; _functionEnvironment = functionEnvironment; _myConfiguration = myConfiguration.Value; _myOtherConfiguration = myOtherConfiguration.Value; }
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")); }