ASP.NET Core 项目中有个appsettings.json
配置文件,用于存放一些配置信息,比如数据库连接字符串等,但访问的话,只能在 ASP.NET Core 项目中获取,如果我们在其他项目类库中,该怎样获取呢?
实现方式就是利用 ASP.NET Core DI,将配置信息注入到 IoC 中,通过构造函数获取注入的对象。
appsettings.json
示例代码:
{ "AppSettings": { "AccessKey": "111111", "SecretKey": "22222", "Bucket": "3333333", "Domain": "http://wwww.domain.com" }, "Logging": { "IncludeScopes": false, "LogLevel": { "Default": "Error", "System": "Information", "Microsoft": "Information" } }}
对应AppSettings
对象代码:
public class AppSettings{ public string AccessKey { get; set; } public string SecretKey { get; set; } public string Bucket { get; set; } public string Domain { get; set; }}
ConfigureServices
添加配置代码:
public void ConfigureServices(IServiceCollection services){ var appSettings = Configuration.GetSection("AppSettings"); services.Configure(appSettings); services.AddTransient (); // Add framework services. services.AddMvc();}
UpoladService
通过构造函数方式获取注入对象:
public class UpoladService : IUpoladService{ private AppSettings _appSettings; public UpoladService(IOptionsMonitorappSettings) { _appSettings = appSettings.CurrentValue; //IOptions 需要每次重新启动项目加载配置,IOptionsMonitor 每次更改配置都会重新加载,不需要重新启动项目。 }}