tft每日頭條

 > 科技

 > asp.netcore全面解析

asp.netcore全面解析

科技 更新时间:2025-01-10 05:28:28

在ASP.NET Core 6.0中,默認配置文件是appsettings.JSON,該文件存儲的内容為JSON格式的字符串,我們一般都将程序的配置放在這個文件裡面,提供給程序使用,那麼我們該如何操作呢?

ASP.NET Core默認加載順序是appsettings.json->appsettings.Environment.json,它會根據當前的運行環境去加載不同的配置文件,最後appsettings.Environment.json 值将替代 appsettings.json 中的值,如果沒有多個值,則取默認值。

在開始之前,我們先在appsettings.json中新增一些配置信息

1 2 3 4

"Wechat": { "AppId": "wx26c607c55f31745e", "AppSecret": "e7da82499266ca3fdf85290f68f8fd3a" }

asp.netcore全面解析(跟着官網學ASP.NETCore6.0之讀取配置文件)1

簡單讀取配置

現在我們就嘗試讀取配置文件中AppId和AppSecret的值,在Program.cs中,我們直接可以用WebApplicationBuilder裡面的Configuration屬性來讀取,取配置内容的方式有很多,比如:

1 2

string appId = builder.Configuration.GetSection("Wechat")["AppId"]; string appSecret = builder.Configuration.GetSection("Wechat")["AppSecret"];

asp.netcore全面解析(跟着官網學ASP.NETCore6.0之讀取配置文件)2

還可以這樣

1 2

string appId1 = builder.Configuration["Wechat:AppId"]; string appSecret1 = builder.Configuration["Wechat:AppSecret"];

當然,它還可以更深的層級,如:builder.Configuration["AppConfig:Wechat:AppSecret"]

asp.netcore全面解析(跟着官網學ASP.NETCore6.0之讀取配置文件)3

如果我們想在非Program.cs裡面讀取配置,則需要注入IConfiguration實例,其他操作方式便和前面的一緻,我們還在來實踐一次,這裡我先新建一個Controller

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

[Route("api/[controller]")] [ApiController] public class ConfigurationController : ControllerBase { private readonly IConfiguration Configuration; public ConfigurationController(IConfiguration configuration) { Configuration = configuration; } [HttpGet] public string ReadConfig() { return Configuration["Wechat:AppId"]; } }

我們直接訪問api/Configuration,便能返回配置文件中的AppId信息,

asp.netcore全面解析(跟着官網學ASP.NETCore6.0之讀取配置文件)4

配置綁定到實體

如果配置文件比較複雜,我們依然用前面的方式一個個的去取值,那确實有些繁瑣,所以,我們需要更高端的操作,直接把配置内容裝載到實體類中,這我新建一個名為WechatConfiguration的類,裡面加入與配置文件對應的屬性

1 2 3 4 5 6 7

public class WechatConfiguration { public const string KEY = "Wechat"; public string AppId { get; set; } = String.Empty; public string AppSecret { get; set; } = String.Empty; }

這裡,我們需要使用的IConfiguration的GetSection方法來獲取指定節點的内容,然後使用Get<T>将内容序列化為對象,看例子

1

Configuration.GetSection(WechatConfiguration.KEY).Get<WechatConfiguration>();

asp.netcore全面解析(跟着官網學ASP.NETCore6.0之讀取配置文件)5

asp.netcore全面解析(跟着官網學ASP.NETCore6.0之讀取配置文件)6

除了使用Get<T>取值,還可使用Bind方法,将值綁定到對象上

1 2

WechatConfiguration wechatConfiguration = new WechatConfiguration(); Configuration.GetSection(WechatConfiguration.KEY).Bind(wechatConfiguration);

asp.netcore全面解析(跟着官網學ASP.NETCore6.0之讀取配置文件)7

這兩種方式都能獲取到配置文件修改後的内容,除了上面兩種方式獲取配置内容外,還可以使用直接将配置對象注入到容器中,

1

builder.Services.Configure<WechatConfiguration>(builder.Configuration.GetSection(WechatConfiguration.KEY));

然後在需要使用的類中注入IOptions<T>,通過其Value屬性來獲取配置類對象

1 2 3 4 5 6 7 8 9 10 11

public class ConfigurationController : ControllerBase { private readonly IConfiguration Configuration; private readonly WechatConfiguration wechat; public ConfigurationController(IConfiguration configuration, IOptions<WechatConfiguration> options) { Configuration = configuration; wechat = options.Value; } }

asp.netcore全面解析(跟着官網學ASP.NETCore6.0之讀取配置文件)8

如果配置類過多,那麼在Program.cs便會顯得雜亂臃腫,所以,我們可以将其移動到擴展方法以注冊服務,這裡新建一個擴展類ConfigServiceCollectionExtensions,将前面的代碼移動到該類中

1 2 3 4 5 6 7 8

public static class ConfigServiceCollectionExtensions { public static IServiceCollection AddConfig(this IServiceCollection services, IConfiguration config) { services.Configure<WechatConfiguration>(config.GetSection(WechatConfiguration.KEY)); return services; } }

然後在Program.cs中添加引用即可

1

builder.Services.AddConfig(builder.Configuration);

配置文件讀取就先了解這麼,明天就要開始上班了,又要忙起來了,後面有時間再繼續學習ASP.NET Core 中的路由。

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关科技资讯推荐

热门科技资讯推荐

网友关注

Copyright 2023-2025 - www.tftnews.com All Rights Reserved