TNBLOG
首页
博客
视频
资源
问答
猿趣
手机
关于
搜索
收藏
便签
笔记
消息
创作
登录
剑轩
应无所住,而生其心
博主信息
排名
6
文章
6
粉丝
16
评论
8
文章类别
CSS
16篇
微服务
41篇
Git
15篇
.NET
104篇
移动开发
33篇
软件架构
23篇
.NET Core
119篇
.NET MVC
11篇
英语
3篇
随笔
90篇
Bootstrap
3篇
Redis
21篇
编辑器
10篇
Js相关
15篇
虚拟化
8篇
更多
Oracle
7篇
Python
14篇
数据库
26篇
EF
17篇
微信
3篇
前端
160篇
消息队列
6篇
docker
41篇
多线程
1篇
Java
4篇
软件基础
2篇
C++
2篇
WCF
7篇
Linux
7篇
nginx
5篇
K8S
9篇
ABP
2篇
最新文章
最新评价
{{item.articleTitle}}
{{item.blogName}}
:
{{item.content}}
关于我们
ICP备案 :
渝ICP备18016597号-1
网站信息:
2018-2024
TNBLOG.NET
技术交流:
群号656732739
联系我们:
contact@tnblog.net
欢迎加群
欢迎加群交流技术
原
.net6使用nacos作为配置中心
8830
人阅读
2022/11/13 21:05
总访问:
4428149
评论:
0
收藏:
1
手机
分类:
微服务
tn2>consul+.net core实现配置中心: https://www.tnblog.net/aojiancc2/article/details/6815 nacos的安装参考: https://www.tnblog.net/aojiancc2/article/details/7865 nacos的官方文档: https://nacos.io/zh-cn/docs/v2/quickstart/quick-start.html .net 的sdk https://github.com/nacos-group/nacos-sdk-csharp nacos下.net的驱动地址: https://github.com/nacos-group/nacos-sdk-csharp [TOC] ## .net6使用nacos作为配置中心基本使用 ### 第一步,添加依赖库 ``` <PackageReference Include="nacos-sdk-csharp" Version="1.3.4" /> <PackageReference Include="nacos-sdk-csharp.AspNetCore" Version="1.3.4" /> <PackageReference Include="nacos-sdk-csharp.Extensions.Configuration" Version="1.3.4" /> <PackageReference Include="nacos-sdk-csharp.IniParser" Version="1.3.4" /> <PackageReference Include="nacos-sdk-csharp.YamlParser" Version="1.3.4" /> ``` ### 第二步,在appsettings.json中配置好使用nacos的信息 ``` { "NacosConfig": { "Listeners": [ { "Optional": false, "DataId": "tnblog.main.test", "Group": "DEFAULT_GROUP" } ], //"Namespace": "csharp-demo", // Please set the value of Namespace ID !!!!!!!! "ServerAddresses": [ "http://xxx.yyy.zzz.yyyy:8848" ], "UserName": "nacos", "Password": "nacos" //"AccessKey": "", //"SecretKey": "" //"EndPoint": "acm.aliyun.com", //"ConfigFilterAssemblies": [ "YouPrefix.AssemblyName" ], //"ConfigFilterExtInfo": "some ext infomation" } } ``` 最主要就是nacos服务的地址,登录nacos的账户与密码等。以及需要配置到nacos上面的配置信息,比如我这里配置的要读取的是Group为DEFAULT_GROUP,DataId为tnblog.main.test的配置。这个我们就需要在nacos中去配置好,相关的配置。 ![](https://img.tnblog.net/arcimg/aojiancc2/44711e95552f433a9c751999f8f948ab.png) **比如我们随便配置一点内容:** 就把appsettings.json中默认的日志配置进去,然后加了一点数据库与Kestrel的配置,项目启动端口什么的。 ``` { "Logging": { "LogLevel": { "Default": "Information", "Microsoft.AspNetCore": "Warning" } }, "AllowedHosts": "*", "Kestrel": { "Limits": { "MaxConcurrentConnections": 100, "MaxConcurrentUpgradedConnections": 100 }, "DisableStringReuse": true, "EndPoints": { "Http": { "Url": "http://*:8805" // 项目启动端口 } } }, "DbConfig":{ "DbType": 0, //数据库连接字符串 "ConnectionString": "Data Source=localhost;port=3306;Initial Catalog=TNBLOG;uid=root;pwd=123456;CharSet=utf8mb4;Allow User Variables=true;", "IsAutoCloseConnection": true } } ``` 在nacos中的配置效果如下: ![](https://img.tnblog.net/arcimg/aojiancc2/f1e17843c10b4862922cb658ea095ab7.png) ### 第三步,在Program.cs中去加载nacos配置 ``` var app = builder.Build(); builder.Host.UseNacosConfig(section: "NacosConfig", parser: null, logAction: null); // .UseNacosConfig(section: "NacosConfig", parser: Nacos.YamlParser.YamlConfigurationStringParser.Instance logAction: null) // .UseNacosConfig(section: "NacosConfig", parser: Nacos.IniParser.IniConfigurationStringParser.Instance logAction: null) //v1.3.3之前版本的用法 //builder.Host.ConfigureAppConfiguration(webBuilder => //{ // webBuilder.AddNacosV2Configuration(webBuilder.Build().GetSection("nacos")); // Console.WriteLine("ConfigureWebHostDefaults"); //}); ``` 基本的操作就完成了,现在我们读取配置文件的内容就已经是配置在nacos上面的了 ## 测试读取配置 ``` private readonly IConfiguration _configuration; private readonly ILogger<WeatherForecastController> _logger; public WeatherForecastController(ILogger<WeatherForecastController> logger, IConfiguration configuration) { _logger = logger; _configuration = configuration; } [HttpGet] public IEnumerable<string> Get() { var dbConfig = _configuration.GetSection("DbConfig"); //读取连接字符串配置 string connectionString = dbConfig["ConnectionString"]; //读取配置 string isAutoCloseConnection = _configuration["DbConfig:IsAutoCloseConnection"]; return new List<string>() { connectionString, isAutoCloseConnection }; } ``` 使用配置的启动端口8805去访问项目进行测试就能看到配置会被成功读取: ![](https://img.tnblog.net/arcimg/aojiancc2/6362403253e14a71996ecac67bea135c.png) #### 项目下载地址 https://download.tnblog.net/resource/index/f0c04703387b4ec5908ba4e022ccbe81 ## 加载多个配置文件,比如加载独立的与公共的 很简单在Listeners中去配置多个就行了,这样就可以加载多个配置文件了。 ![](https://img.tnblog.net/arcimg/aojiancc2/1bd5df28a9c549c493e8aba9dd2ab3ae.png) 比如我这里加载了tnblog.main.common以及tnblog.main.test两个配置文件。 ![](https://img.tnblog.net/arcimg/aojiancc2/00559cc40f1444b8a9b27c4ceb01c137.png) 加载多个配置文件后,每个配置文件中的内容都可以使用,如果多个配置文件中有重复的配置,后面的会覆盖前面的。 **测试读取的代码** 在两个配置文件中去写点配置,然后读取测试即可 ``` [HttpGet] public IEnumerable<string> Get() { var dbConfig = _configuration.GetSection("DbConfig"); //读取连接字符串配置 string connectionString = dbConfig["ConnectionString"]; //读取配置 string isAutoCloseConnection = _configuration["DbConfig:IsAutoCloseConnection"]; //读取common里边的配置 string UserName = _configuration["UserName"]; string Password = _configuration["Password"]; return new List<string>() { connectionString, isAutoCloseConnection }; } ``` ## 怎么动态的加载不同的配置文件,比如动态切换生产环境与本地开发环境 **很简单,配合.net 中的环境变量使用即可。** 比如我们开发的环境使用的nacos地址是http://192.168.1.1:8848, 线上使用的nacos地址是https://www.tnblog.net/nacos **我们就可以在appsettings.json中配置两个出来** 比如 ``` //开发环境使用的nacos "NacosConfig-Development": { "Listeners": [ { "Optional": false, "DataId": "tnblog.main.test", "Group": "DEFAULT_GROUP" } ], "ServerAddresses": [ "http://192.168.1.1:8848" ], "UserName": "nacos", "Password": "nacos" }, //正式环境使用的nacos "NacosConfig-Production": { "Listeners": [ { "Optional": false, "DataId": "tnblog.main.test", "Group": "DEFAULT_GROUP" } ], "ServerAddresses": [ "https://www.tnblog.net/nacos" ], "UserName": "nacos", "Password": "nacos" } ``` **然后在Program.cs使用nacos配置的时候根据环境变量来即可** ``` //获取环境变量。可以环境变量的不同去读取不同naocs服务的配置 string environmentName = builder.Environment.EnvironmentName; //nacos注册中心 builder.Host.UseNacosConfig(section: "NacosConfig-"+ environmentName, parser: null, logAction: null); ``` 测试的时候你本地直接运行获取的就是Development的配置,如果是发布出来后运行的获取的就是Production **当然你也可以在同一个nacos服务中根据不同的环境变量去加载不同的配置文件** 比如你在nacos中创建配置环境的时候可以命名:tnblog.main.test.Development以及tnblog.main.test.Production然后根据不同的环境变量去加载不同的配置。根据实际情况灵活运用即可。 ## 常用错误解决 ....
欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739
👈{{preArticle.title}}
👉{{nextArticle.title}}
评价
{{titleitem}}
{{titleitem}}
{{item.content}}
{{titleitem}}
{{titleitem}}
{{item.content}}