我们如何在新的asp.net vnext中存储配置数据? web.config仍然存在(system.web已删除,因此没有任何web.config,但我喜欢它)或使用新的json文件来获取配置数据。
答案 0 :(得分:5)
最佳配置是强类型选项的起点。因此,您在启动时要做的是注册一个Options对象,使用从配置中读取的数据进行设置,然后在其余代码中从DI系统获取它。
示例:
创建一个Options对象
public class ApplicationOptions
{
public bool MyOption { get; set; }
}
阅读配置并设置选项对象,然后在DI
中注册public void Configure(IApplicationBuilder app)
{
// rest of setup
var applicationOptions = new ApplicationOptions();
string myOption;
if (configuration.TryGet("MyOption", out myOption) &&
myOption.Equals("True", StringComparison.OrdinalIgnoreCase))
{
applicationOptions.MyOption = true;
}
// For the scenario above also the code below will work.
// It is currently limited to desktop (ASPNET50, NET45) only.
// services.Configure<ApplicationOptions>(configuration);
services.AddInstance<ApplicationOptions>(applicationOptions);
// more setup
}
并在您的代码中解决它
public class MyController : Controller
{
public IActionResult Index(ApplicationOptions options)
{
// do something with the options
}
}
编辑:使用任何实用的可重用选项对象,设置它的代码可能会在启动类之外发生。
答案 1 :(得分:5)
在重大更改(测试版6)中,Microsoft.Framework.ConfigurationModel程序集名称已更改为Microsoft.Framework.Configuration 这是修改后的启动类
public IConfiguration Configuration { get; set; }
public Startup(IHostingEnvironment env, IApplicationEnvironment appEnv)
{
var configurationBuilder = new ConfigurationBuilder(appEnv.ApplicationBasePath).
.AddJsonFile("config.json")
.AddEnvironmentVariables();
Configuration = configurationBuilder.Build();
}
答案 2 :(得分:2)
不确定您要存储的数据类型,但这对我有用。我创建了这个文件myconfig.json并以JSON格式存储了我需要的数据。
这将注册您的配置文件,我在startup.cs页面中添加了此代码。
Configuration = new Configuration()
.AddJsonFile("config.json")
.AddJsonFile("myconfig.json")
.AddEnvironmentVariables();
要从您的JSON文件中获取所需的数据,您需要在代码的任何位置使用此数据。
IConfiguration Configuration = new Configuration().AddJsonFile("myconfig.json");
var jsonNodes = Configuration.Get("SomeJsonNode");
string someJsonString = Configuration.Get("someJsonString");
仅供参考:在我测试代码时,json数组不受支持。不确定他们现在是否已修复。