For local.settings.json
, only Values
部分可以导入到环境变量中。(如果你的函数是v2,ConnectionStrings
部分也存在于环境变量中)。所以你会看到结果为 null。
更重要的是,Values
部分是一个Dictionary<string, string>
这意味着值不能是除字符串之外的其他格式。因此你的ClientCOnfiguration
里面会导致错误。
由于您想重新组织这些设置,因此序列化ClientConfiguraiton
将其存储在Values
似乎不是一个好的选择。我们可能只需要读取和解析 Json 文件。
Add 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>
in functionname.csproj
.