Для local.settings.json
только переменная Values
может быть импортирована в переменные окружения. (Если ваша функция v2, секция ConnectionStrings
также присутствует в переменных окружения).Таким образом, вы видите нулевой результат.
Более того, секция Values
представляет собой Dictionary<string, string>
, что означает, что значение не может быть в другом формате, кроме строки.Следовательно, ваш ClientCOnfiguration
изнутри приводит к ошибке.
Поскольку вы хотите реорганизовать эти настройки, сериализация ClientConfiguraiton
для сохранения его в Values
кажется не лучшим вариантом.Нам может понадобиться просто прочитать и проанализировать файл Json.
Добавьте ExecutionContext context
в сигнатуру метода вашей функции и попробуйте код ниже.
var reader = new StreamReader(context.FunctionAppDirectory+"/local.settings.json");
var myJson = reader.ReadToEnd();
dynamic config = JsonConvert.DeserializeObject(myJson);
var clientConfiguration = config.ClientConfiguration as JObject;
myConnectionObject mco = clientConfiguration.ToObject<myConnectionObject>();
Если ваша функция v2, есть другой способ с ConfigurationBuilder
.
var config = new ConfigurationBuilder()
.SetBasePath(context.FunctionAppDirectory)
.AddJsonFile("local.settings.json", optional: false, reloadOnChange: true)
.AddEnvironmentVariables()
.Build();
var mco = new myConnectionObject();
config.GetSection("ClientConfiguration").Bind(mco);
Обратите внимание, что local.settings.json
для локального разработчика, по умолчанию он не будет загружен в Azure.Нужно удалить <CopyToPublishDirectory>Never</CopyToPublishDirectory>
в functionname.csproj
.