环境变量配置提供程序
文件配置提供程序
XML 配置提供程序
ASP.NET Core 中的静态文件
IConfiguration 接口
命名空间:Microsoft.Extensions.Configuration
程序集:Microsoft.Extensions.Configuration.Abstractions.dll
ConfigureServices 方法
Namespace:Microsoft.AspNetCore.Hosting
Assembly:Microsoft.AspNetCore.Hosting.dll
IServiceCollection
对于需要大量设置的功能,IServiceCollection 上有 Add{Service} 扩展方法。 例如,AddDbContext、AddDefaultIdentity、AddEntityFrameworkStores 和 AddRazorPages:
命名空间:Microsoft.Extensions.DependencyInjection
程序集:Microsoft.Extensions.DependencyInjection.Abstractions.dll
1、appsettings.json配置文件
{
"Logging": {
"IncludeScopes": false,
"Debug": {
"LogLevel": {
"Default": "Warning"
}
},
"Console": {
"LogLevel": {
"Default": "Warning"
}
},
"LogLevel": {
"Default": "Warning"
}
},
"ConnectionStrings": {
"DefaultConnection": "Server=.;Database=CoreDb;User ID=sa;Password=000000",
"SqlConnection": "Server=.;Database=CoreDb;User ID=sa;Password=123456",
"DevConnection": "Server=.;Database=CoreDb;User ID=sa;Password=1qaz"
},
"AppSetting": {
"AdminSafeList": "127.0.0.1;192.168.1.5;::1", //IP 安全列表
"Cores": "https://localhost:44390,http://0.0.0.0:3201", //跨域
"UploadFilesRootPath": "E:\\uploadfiles"
},
"Appsettings": {
"SystemName": "Test .NET CORE",
"Date": "2019-01-01",
"Author": "Test"
},
"Authentication": {
"WeChat": {
"AppId": "微信AppID",
"AppSecret": "微信AppSecret"
}
},
"Weixin": {
"AppId": "wxd9bae9d99a99f9ec"
},
"SMS": {
"Url": "https://sms.yunpian.com/v1/sms/send.json"
},
"Service": {
"Name": "clientservice",
"Port": "5010",
"DocName": "clientservice",
"Version": "v1",
"Title": "CAS Client Service API",
"Description": "CAS Client Service API provide some API to help you get client information from CAS",
"Contact": {
"Name": "CAS 2.0 Team",
"Email": "[email protected]"
},
"XmlFile": "Manulife.DNC.MSAD.IdentityServer4Test.ApiService01.xml"
},
"Identity": {
"IP": "localhost",
"Port": "5000",
"Scheme": "Bearer"
},
"JwtSettings": {
"Issuer": "http://localhost:5200",
"Audience": "http://localhost:5200",
"SecretKey": "ABCDEFGHIJKLMNOPQRSTUVWXYZ123456789"
},
"Certificates": {
"CerPath": "certificate\\cas.clientservice.pfx",
"Password": "manulife"
},
"TestName": "123456789",
"AllowedHosts": "*"
}
public void ConfigureServices(IServiceCollection services)
{
string audience = string.Empty;
string issuer = string.Empty;
string secretKey = string.Empty;
#region 从appsettings.json文件中读取JwtSettings相关配置信息
services.Configure(Configuration.GetSection("JwtSettings"));
JwtSettings setting = new JwtSettings();
Configuration.Bind("JwtSettings", setting);
audience = setting.Audience;
issuer = setting.Issuer;
secretKey = setting.SecretKey;
string appId = Configuration["Authentication:WeChat:AppId"];
string appSecret = Configuration["Authentication:WeChat:AppSecret"];
#endregion
services.Configure(Configuration.GetSection("JwtSettings"));
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
}
public class JwtSettings
{
///
/// 证书颁发者
///
public string Issuer { get; set; }
///
/// 允许使用的角色
///
public string Audience { get; set; }
///
/// 加密字符串
///
public string SecretKey { get; set; }
}
using Microsoft.Extensions.Options;
using Microsoft.Extensions.Configuration;
public class HomeController : Controller
{
private IOptions _setting;
private IConfiguration _configuration;
public HomeController(IOptions setting)
{
_setting = setting;
_configuration = configuration;
}
public IActionResult Index()
{
JwtSettings setting = new JwtSettings();
_configuration.Bind("JwtSettings", setting);
string secretKey = _setting.Value.SecretKey;
string issuer = _setting.Value.Issuer;
string audience = _setting.Value.Audience;
return View();
}
}
管理 NuGet 程序包
Microsoft.Extensions.Configuration
Microsoft.Extensions.Configuration.Json
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Configuration.Json;
namespace Test.CoreLibrary
{
///
/// 读取配置文件
/// NuGet: Install-Package Microsoft.Extensions.Configuration
/// NuGet: Install-Package Microsoft.Extensions.Configuration.Abstractions
/// NuGet: Install-Package Microsoft.Extensions.Configuration.Json
///
public class ConfigManager
{
public static IConfiguration Configuration { get; set; }
static ConfigManager()
{
//ReloadOnChange = true 当appsettings.json被修改时重新加载
#region 方式1(ok)
Configuration = new ConfigurationBuilder()
.Add(new JsonConfigurationSource
{
Path = "appsettings.json",
ReloadOnChange = true
}).Build();
#endregion
#region 方式2(ok)
//Configuration = new ConfigurationBuilder()
// .SetBasePath(Directory.GetCurrentDirectory())
// .AddJsonFile("appsettings.json").Build();
#endregion
}
}
}
using System;
using System.IO;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Configuration;
using Test.CoreLibrary;
namespace Web.Test1.Controllers
{
public class TestController : Controller
{
public IActionResult Index()
{
//获取应用程序根目录
var configBasePath = Directory.GetCurrentDirectory();
//获取bin目录路径
var baseDirectory = AppContext.BaseDirectory;
var conn = ConfigManager.Configuration.GetConnectionString("DefaultConnection");
var sqlConn = ConfigManager.Configuration.GetConnectionString("SqlConnection");
var devConn = ConfigManager.Configuration.GetConnectionString("DevConnection");
//读取一级配置节点配置
var name = ConfigManager.Configuration["TestName"];
//读取二级子节点配置
var a = ConfigManager.Configuration["Appsettings:SystemName"];
var b = ConfigManager.Configuration["Appsettings:Author"];
var name1 = ConfigManager.Configuration.GetSection("TestName").Value;
var a1 = ConfigManager.Configuration.GetSection("Appsettings:SystemName").Value;
var b1 = ConfigManager.Configuration.GetSection("Appsettings:Author").Value;
return View();
}
}
}