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就可以切换获取配置信息

 

posted @ 2024-02-14 20:38  野码  阅读(133)  评论(0编辑  收藏  举报