在调试测试时从local.setting.json读取值

m1n*_*keh 4 c# json azure azure-functions

在运行或调试测试时,我似乎无法从azure函数中的此文件中读取任何内容,但是在本地调试整个应用程序时,它可以正常工作。.有人能解释为什么吗?

{
  "IsEncrypted": false,
  "Values": {
    "xyz": 123
  }
}

var res = ConfigurationManager.AppSettings.Get("xyz");
Run Code Online (Sandbox Code Playgroud)

ty ..

我可疑的是,这是由于从另一个项目(测试项目)启动了“调试”,而local.settings.json没有与正在测试的项目捆绑在一起吗?

sil*_*o01 6

我以编程方式添加了设置,以最大程度地减少敏感数据到达版本控制的机会。

class LocalSettings
{
    public bool IsEncrypted { get; set; }
    public Dictionary<string, string> Values { get; set; }
}

public static void SetupEnvironment()
{
    string basePath = Path.GetFullPath(@"..\..\..\MyAzureFunc");
    var settings = JsonConvert.DeserializeObject<LocalSettings>(
        File.ReadAllText(basePath + "\\local.settings.json"));

    foreach (var setting in settings.Values)
    {
        Environment.SetEnvironmentVariable(setting.Key, setting.Value);
    }
}
Run Code Online (Sandbox Code Playgroud)


Dre*_*rsh 5

你的怀疑是正确的。实际上只有 Azure Functions 运行时主机知道从该文件中读取设置并将它们合并到整个 AppSettings 中。在测试项目中运行时,不涉及 Azure Functions 运行时主机,因此您无法访问它们。

解决此问题的最简单方法是将所有相同的设置键/值反映到app.config标准<appSettings>部分下的测试项目文件中。

  • 太棒了,我添加了一个 app.config,并从 app.debug.config 应用了转换,效果很好 - 谢谢! (2认同)