我正在创建.net核心2.1 MVC应用程序。
部署将在Azure上用于Linux的Web APP上完成。
什么是在代码中读取应用程序设置的正确方法,因为在我的appsettings.json中,我无法保留用户名,密码等敏感信息。 另外,我的一些键是层次结构,例如:Rids下的xyz标签,然后是键值。
{
"ConnectionStrings":
{
"DefaultConnection": "connection key here"
},
"abc":
{
"apiKey": "some value",
"apiSecret": "some value",
"appName": "some value",
},
"xyz": {
"UserName": "some value",
"Password": "some value",
"RIds": {
"a": "some value",
"b": "some value",
"c": "some value"
},
"ClientSecret": "some value"
}
}
答案 0 :(得分:1)
您可以通过两种方式读取分层配置数据。第一个显示在MSDN Documentation
中您可以通过Config数组读取子键,如下所示:
Config["xyz:UserName"]
Config["xyq:RIds:a"]
另一种替代方法是创建一个类,该类表示您尝试加载的数据:
public class Xyz
{
public string UserName { get; set; }
public string Password { get; set; }
public RIds RIds { get; set; }
}
public class RIds
{
public string a { get; set; }
public string b { get; set; }
public string c { get; set; }
}
在startup.cs
中,您可以将配置加载到您的类中,然后将其注入需要它的其他任何类中:
public Configure(IServiceCollection services)
{
...
services.AddConfiguration<Xyz>(Configuration.GetSection("xyz"));
}
现在您可以使用IOptions<T>
类在一个类中访问它
public class MyClass
{
private readonly Xyz _config;
public MyClass(IOptions<Xyz> options)
{
_config = options.Value;
var username = _config.UserName;
}
}
当您在Azure应用设置中定义设置时,这也适用。要获取层次结构,您需要使用:
来识别关系,例如
xyz:UserName
xyz:Password
所有配置信息均可在MSDN
上获得您可以阅读有关IOptions<T>
here