Как упоминал Владимир, вам нужно передать ExecutionContext в методе Azure Function:.
public static async Task<IActionResult> Run( ... , ExecutionContext context)
{
...
}
Теперь, когда вы строите свою конфигурацию, вы задаете базовый путь, используя ExecutionContext.FunctionAppDirectory
собственность.Я также необязательно добавляю local.settings.json для локальной отладки:
var config = new ConfigurationBuilder()
.SetBasePath(context.FunctionAppDirectory) // Here you include the app directory from the context
.AddJsonFile("host.json", optional: false, reloadOnChange: true)
.AddJsonFile("local.settings.json", optional: true, reloadOnChange: true) // for local debugging
.AddEnvironmentVariables()
.Build();
Для дальнейшего улучшения вашего кода я бы порекомендовал создать класс для ваших настроек .Например:
public sealed class FunctionSettings
{
public string MySetting { get; set; }
}
Таким образом, вы можете получить доступ к настройкам следующим образом:
var settings = new FunctionSettings();
config.Bind(settings);
var value = settings.MySetting
вместо
var value = Configuration["MySetting"];