上一篇我们将了读取自定义配置文件。这篇我们讲一下asp.net core mvc里读取自带的配置文件 appsettings.json
首先创建个asp.net core mvc项目,项目里有Program.cs文件, 代码 WebHost.CreateDefaultBuilder(args) 这句话里加默认加载了appsettings.json,所以就不需要再次指定json文件了。
其次,打开Startup.cs文件,在方法ConfigureServices里添加一句代码:
//将MyClass注册进Configuration
MyClass类与appsettings.json里的字段是一一对应的即可。
接下来我们就可以使用了。
(1)创建个控制器,在构造函数里注入
using
/// <summary>
/// 构造函数,这里用IOptionsSnapshot可以支持热更新,如果使用IOptions则不支持热更新
/// </summary>
/// <param name="_myclass"></param>
public HomeController(IOptionsSnapshot<MyClass> _myclass)
{
myclass = _myclass.Value;
}
(2)需要使用的地方就可以直接拿myclass使用了。
public IActionResult Index()
{
return View(myclass);
}
(3)也可以在Views里直接使用,直接省去(1)(2)步骤。
@using Microsoft.Extensions.Options;
@inject IOptionsSnapshot<MyClass> myClass;
@{
ViewData["Title"] = "Home Page";
}
<div class="text-center">
<h1>班级名称:@myClass.Value.className</h1>
<h1>班级秒速:@myClass.Value.classDesc</h1>
<div>
@foreach(var s in myClass.Value.students)
{
<div>
学生姓名:@s.name
</div>
<div>
学生年龄:@s.age
</div>
}
</div>
</div>
还有种最简单,最灵活的方法:
1、应用的依赖关系注入 (DI) 容器中提供了 IConfiguration。 IConfiguration 可注入到 Razor Pages PageModel 以获取以下类的配置:
using Microsoft.Extensions.Configuration;
public class IndexModel : PageModel
{
private readonly IConfiguration _config;
public IndexModel(IConfiguration config)
{
_config = config;
}
// The _config local variable is used to obtain configuration
// throughout the class.
2、在需要使用的地方:
var sectCofiguration= _configuration.GetSection("RedisConfig:RedisSentinelsUrl");
string sectValu= sectCofiguration.Value;
3、强类型转换:
//配置文件JwtSettings有子节点;对应类JwtSettings的属性
IConfigurationSection configSection = configuration.GetSection("JwtSettings");
//JwtSettings 是一个类
作者:沐雪
文章均系作者原创或翻译,如有错误不妥之处,欢迎各位批评指正。本文版权归作者所有,如需转载恳请注明。
为之网-热爱软件编程 http://www.weizhi.cc/