Не могу найти host.json - PullRequest
       1

Не могу найти host.json

1 голос
/ 17 июня 2019

Я создал новую функцию Azure, и у меня есть шаг для чтения host.json, он работал на моем столе, но при публикации в Azure я получил ошибку:

Файл конфигурации 'host.json' не найден и не является обязательным. Физический путь - «D: \ Program Files». (X86) \ SiteExtensions \ функции \ 2.0.12507 \ 32bit \ host.json».

Вот что я попробовал:

var Configuration = new ConfigurationBuilder()
                          .SetBasePath(Directory.GetCurrentDirectory())
                          .AddJsonFile("host.json",false)
                          .Build();

var value = Configuration["value"];

Так как я могу это исправить?

Ответы [ 2 ]

2 голосов
/ 17 июня 2019

Как упоминал Владимир, вам нужно передать 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"];
1 голос
/ 17 июня 2019

Вам нужно использовать ExecutionContext у него есть свойство FunctionAppDirectory

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...