配置静态文件路径_.NetCore一周集训(四):应用配置、日志、路由和静态文件...

04 应用配置、日志、路由和静态文件

应用配置

在开发过程中,有些时候我们都会有配置应用的需求。

在 ASP.NET 中,我们一般使用 Web.config 来进行配置。但是在 ASP.NET Core 中 ,你们会发现 Web.config 已经没了,因为它被 appsettings.json 这个配置文件取代了。

基本用法

如果你还记得前两节课内容的话,你应该知道在主机创建后,服务容器里就已经为我们默认注册了一些服务,其中一个就是 IConfiguration 服务。

这个服务可以被注入到Startup类的构造函数中,它为我们提供了应用配置相关的服务。

假设有如下配置项:

// 键不区分大小写。例如,`ConnectionString` 和 `connectionstring` 被视为等效键。"ConnectionString": "data source=.;initial catalog=db;user id=sa","WebSetting": {
        "WebName": "ASP.NET Core",    "Title": "Hello Title",    "Behavior": {
            "IsCheckIp": true,        "MaxConnection":  300      }}

首先,创建Startup类的构造函数,并注入  IConfiguration

private readonly IConfiguration _configuration;public Startup(IConfiguration configuration){
        _configuration = configuration;}

之后,就可以在任何一个方法中使用它了

app.Run(async context =>        {
                var connStrDefault = _configuration.GetConnectionString("default");            var connStr = _configuration["connectionString"];            var title = _configuration["WebSetting:Title"];            var isCheckIp = _configuration["WebSetting:Behavior.IsCheckIp"];            await context.Response.WriteAsync($"{connStrDefault}\r connStr \r title \r isCheckIp");        });
绑定配置模型对象

使用字符串键名获取配置值很不优雅,也容易出错。我们可以把配置项绑定到对象。

首先,创建配置项结构对应的配置模型。

public class Behavior{
        public bool IsCheckIp { get; set; }    public int MaxConnection { get; set; }}public class WebSetting{
        public string WebName { get; set; }    public string Title { get; set; }    public Behavior Behavior { get; set; }}public class AppSetting{
        public string ConnectionString { get; set; }    public WebSetting WebSetting { get; set; }}

然后,创建配置模型对象,并通过 IConfiguration 服务绑定

// 全部绑定var appSetting = new AppSetting();_configuration.Bind(appSetting);// 部分绑定var behavior = new Behavior();_configuration.GetSection("Behavior").Bind(behavior);app.Run(async context =>        {
                var connStrDefault = appSetting.ConnectionString;            var title = appSetting.WebSetting.Title;            var isCheckIp = appSetting.WebSetting.Behavior.IsCheckIp;            var maxConnection = appSetting.WebSetting.Behavior.MaxConnection;            await context.Response.WriteAsync($"{connStrDefault} \r {title} \r {isCheckIp} \r {maxConnection}");        });
注册配置选项

首先,在 ConfigureServices 方法中,注册AppSetting绑定的配置服务

services.Configure<AppSetting>(_configuration);

然后,在需要的地方利用参数把IOptions注入进来:

public void Configure(IApplicationBuilder app, IWebHostEnvironment env, IOptions<AppSetting> appOptions){
        app.Run(async context =>            {
                    var connStrDefault = appOptions.Value.ConnectionString;                var title = appOptions.Value.WebSetting.Title;                var isCh
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值