4.NET中使用Nacos分布式配置中心
nuget 安装:
1. nacos-sdk-csharp
2. nacos-sdk-csharp.AspNetCore
3. nacos-sdk-csharp.Extensions.Configuration
创建WebAPI项目,ConfigCenter.NacosService1
{ "Logging": { "LogLevel": { "Default": "Information", "Microsoft.AspNetCore": "Warning" } }, "AllowedHosts": "*", "NacosConfig": { "Listeners": [ // 配置文件,至少要有一个 { "Optional": true, // 是否可选,true:可以不创建,但控制台会给出警告,false:必须要有 "DataId": "app1-dev.josn", // 配置文件 "Group": "DEFAULT_GROUP" }, { "Optional": true, // 是否可选,true:可以不创建,但控制台会给出警告,false:必须要有 "DataId": "app1-common", // 配置文件 "Group": "DEFAULT_GROUP" } ], "Namespace": "production",// 此处不要写public,必须设置一个你自己的命名空间 "ServerAddresses": [ "http://127.0.0.1:8848/" ], // 服务器地址 "UserName": "nacos", // nacos 登录账号 "Password": "你的密码", // nacos 登录密码 "ConfigUseRpc": false, // 配置中心是否使用Rpc协议通信 "NamingUseRpc": false // 注册中心是否使用RPC协议通信 } }
var builder = WebApplication.CreateBuilder(args); // Add services to the container. builder.Services.AddControllers(); builder.Services.AddSwaggerGen(); builder.Host.UseNacosConfig("NacosConfig"); builder.Services.AddNacosAspNet(builder.Configuration);//服务注册 var app = builder.Build();
添加配置
Listeners中有多少个,这里可以配置多少管理。
添加控制器,并运行
[ApiController] [Route("[controller]/[action]")] public class HomeController:ControllerBase { private readonly IConfiguration _configuration; public HomeController(IConfiguration configuration) { _configuration = configuration; } [HttpGet] public IActionResult GetConnStr() { var connectionString = _configuration.GetConnectionString("MySQL"); var redis = _configuration["redis"]; return Ok(new{connectionString,redis}); } }
多环境配置中心
添加两个命名空间dev为开发环境,production为生产环境
在配置列表里去添加配置
dev开发环境:
Data ID 需要改成app1-common
production生产环境
设置开发环境下配置文件appsettings.Development.json
{ "Logging": { "LogLevel": { "Default": "Information", "Microsoft.AspNetCore": "Warning" } }, "NacosConfig": { "Listeners": [ // 配置文件,至少要有一个 { "Optional": true, // 是否可选,true:可以不创建,但控制台会给出警告,false:必须要有 "DataId": "app1", // 配置文件 "Group": "DEFAULT_GROUP" }, { "Optional": true, // 是否可选,true:可以不创建,但控制台会给出警告,false:必须要有 "DataId": "app1-common", // 配置文件 "Group": "DEFAULT_GROUP" } ], "Namespace": "dev",// 此处不要写public,必须设置一个你自己的命名空间 "ServerAddresses": [ "http://101.43.242.9:8848/" ], // 服务器地址 "UserName": "nacos", // nacos 登录账号 "Password": "xuyubing@19910629", // nacos 登录密码 "ConfigUseRpc": false, // 配置中心是否使用Rpc协议通信 "NamingUseRpc": false // 注册中心是否使用RPC协议通信 } }
设置生产环境下配置文件appsettings.json
{ "Logging": { "LogLevel": { "Default": "Information", "Microsoft.AspNetCore": "Warning" } }, "AllowedHosts": "*", "NacosConfig": { "Listeners": [ // 配置文件,至少要有一个 { "Optional": true, // 是否可选,true:可以不创建,但控制台会给出警告,false:必须要有 "DataId": "app1", // 配置文件 "Group": "DEFAULT_GROUP" }, { "Optional": true, // 是否可选,true:可以不创建,但控制台会给出警告,false:必须要有 "DataId": "app1-common", // 配置文件 "Group": "DEFAULT_GROUP" } ], "Namespace": "production",// 此处不要写public,必须设置一个你自己的命名空间 "ServerAddresses": [ "http://127.0.0.1:8848/" ], // 服务器地址 "UserName": "nacos", // nacos 登录账号 "Password": "你的密码", // nacos 登录密码 "ConfigUseRpc": false, // 配置中心是否使用Rpc协议通信 "NamingUseRpc": false // 注册中心是否使用RPC协议通信 } }
设置启动配置文件launchSettings.json
ASPNETCORE_ENVIRONMENT有三种模式:Development(开发环境),Production(生产环境),Staging(预上线)
"http": { "commandName": "Project", "dotnetRunMessages": true, "launchBrowser": true, "launchUrl": "swagger", "applicationUrl": "http://192.168.10.13:5152", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" } },
控制器内写一个方法过去配置信息
[ApiController] [Route("[controller]/[action]")] public class HomeController:ControllerBase { private readonly IConfiguration _configuration; public HomeController(IConfiguration configuration) { _configuration = configuration; } [HttpGet] public IActionResult GetConnStr() { var connectionString = _configuration.GetConnectionString("MySQL"); var redis = _configuration["redis"]; return Ok(new{connectionString,redis}); } }
只要修改 launchSettings.json里的ASPNETCORE_ENVIRONMENT的Production和Development就可以切换获取配置信息