C# asp.net core 配置 nacos 完整教程,还有提示 “EndPoint” 相关内容报错的处理。
界面截图,关键信息截图如下:




第一步,安装需要的 Nuget包,按自己的需要进行安装,
我这里用到了两个包 :
nacos-sdk-csharp
nacos-sdk-csharp.Extensions.Configuration
dotnet add package nacos-sdk-csharp dotnet add package nacos-sdk-csharp.AspNetCore dotnet add package nacos-sdk-csharp.Extensions.Configuration dotnet add package nacos-sdk-csharp.YamlParser dotnet add package nacos-sdk-csharp.IniParser
第二步,.net core 项目代码的 json 文件配置如下:
/*---Nacos配置(开始)---*/
"NacosConfig": {
"Listeners": [
{
"Optional": false,
"DataId": "oa-dev.json",//nacos上面的 Data Id
"Group": "DEFAULT_GROUP" //nacos上面的 Group 名
}
],
"Namespace": "e72b8366-f380-4756-a8d0-0273d9712250", //nacos上面的 Namespace 名
"ServerAddresses": [ "http://192.168.10.44:8848" ], //nacos上的ip节点,可以配置多个,用逗号隔开
"UserName": "",//可以不填
"Password": "",//可以不填
"AccessKey": "",
"SecretKey": "",
//"EndPoint": "acm.aliyun.com",//如果nacos上面的配置详情的配置内容是空的json内容,例如:{} ,这里如果填了值,代码就会报错,这个一个大坑,被坑哭了。最好把它注释掉,留空既不会影响本地,也不会影响nacos上的,也会优先读取nacos上的json文件。
"ConfigFilterAssemblies": [ "YouPrefix.AssemblyName" ],//官方文档默认复制过来的
"ConfigFilterExtInfo": "some ext infomation" //官方文档默认赋值过来的
},
"nacos": {
//"EndPoint": "sub-domain.aliyun.com:8080",//和上面的解释一样,最好留空,不然很容易报错。
"ServerAddresses": [ "http://192.168.10.44:8848"],
"DefaultTimeOut": 15000,
"Namespace": "e72b8366-f380-4756-a8d0-0273d9712250",
"ListenInterval": 1000,
"ServiceName": "oa",//往nacos服务注册的服务名,自己定义的,喜欢用那个名字就用哪个
"GroupName": "DEFAULT_GROUP",
"ClusterName": "DEFAULT",
"Ip": "",
"PreferredNetworks": "", // select an IP that matches the prefix as the service registration IP
"Port": 8189,//往nacos服务注册的服务端口
"Weight": 100,
"RegisterEnabled": true,
"InstanceEnabled": true,
"Ephemeral": true,
"Secure": false,
"AccessKey": "",
"SecretKey": "",
"UserName": "",
"Password": "",
"ConfigUseRpc": true,
"NamingUseRpc": true,
"NamingLoadCacheAtStart": "",
"LBStrategy": "WeightRandom", //WeightRandom WeightRoundRobin
"Metadata": {
"aa": "bb",
"cc": "dd"
}
},
/*---Nacos配置(结束)---*/
第三步,官方文档内容,在 Program.cs 进行如下配置,官方文档 logAction 前面少了一个逗号,我这里加上了:
// v1.3.3 版本之后, 可以用 UseNacosConfig 来简化
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.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)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
第四步,官方文档内容,服务注册和发现,在 Program.cs 中配置:
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
public void ConfigureServices(IServiceCollection services)
{
// ...
services.AddNacosAspNet(Configuration, "nacos");
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
// ...
}
}
总结:
总共有四个步骤,其实很简单,但是踩坑花了不少时间。
两个开发人员在那里研究,看报错信息,测试,花了有一个下午吧,好在解决了。
如果报错了,重点看json配置文件的值。
如果本地有json文件,nacos上的配置信息的配置内容里又写了配置的json内容,那nacos服务就是优先读取nacos配置上面的json内容,具体参考上面的截图。
如果看到这里对你有帮助,点个赞支持一下吧,踩坑不易。
nacos官方文档地址:
https://nacos.io/zh-cn/docs/what-is-nacos.html
github官方文档地址:
https://github.com/nacos-group/nacos-sdk-csharp/blob/dev/README.zh-cn.md
搜索
复制
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/288008.html