zoukankan      html  css  js  c++  java
  • .NET5微服务示例-Consul配置中心

    接着这篇:https://www.cnblogs.com/shousiji/p/15271767.html

    本文以SGZ.DepartmentService为例

    1、打开Consul => Key/Value => Create,以项目名称命名,名称后面加斜杠就是创建文件夹了

    2、创建appsettings.Development.json、appsettings.Production.json(就是把项目中的配置文件信息粘贴过来)

    3、回到项目,右键appsettings.json,选择“从项目中排除”

    4、新建sitesettings.json,配置如下

    {
      "SiteConfigs": {
        "ServiceScheme": "http",
        "ServiceAddress": "192.168.2.119",
        "ServicePort": 551
      },
      "ConsulConfigs": {
        "DataCenter": "dc1",
        "RegistryAddress": "http://127.0.0.1:8500",
        "HealthCheckAddress": "/HealthCheck",
        "ServiceName": "DepartmentService"
      }
    }

    5、安装Nuget包“Winton.Extensions.Configuration.Consul”

    6、Program类的CreateHostBuilder函数改造(应该使用launchSettings.json来配置站点地址,不然用SiteConfigs就多写代码了,留个心眼后面再改造)

    public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .ConfigureWebHostDefaults(webBuilder =>
            {
                webBuilder.UseStartup<Startup>();
    
                var configuration = new ConfigurationBuilder().AddJsonFile("sitesettings.json", false, true).Build();
                string serviceScheme = configuration["SiteConfigs:ServiceScheme"];
                string serviceAddress = configuration["SiteConfigs:ServiceAddress"];
                string servicePort = configuration["SiteConfigs:ServicePort"];
                if (!string.IsNullOrEmpty(serviceScheme)
                    && !string.IsNullOrEmpty(serviceAddress)
                    && !string.IsNullOrEmpty(servicePort))
                {
                    webBuilder.UseUrls($"{serviceScheme}://{serviceAddress}:{servicePort}");
                }
                webBuilder.ConfigureAppConfiguration(configure =>
                {
                    configure.AddConfiguration(configuration);
                });
    
                #region 从配置中心中获取配置信息,去掉就变为从本地获取
                string consulAddress = configuration["ConsulConfigs:RegistryAddress"];
                string consulDataCenter = configuration["ConsulConfigs:DataCenter"];
                webBuilder.ConfigureAppConfiguration((context, configure) =>
                {
                    IWebHostEnvironment webHostEnvironment = context.HostingEnvironment;
                    string ApplicationName = webHostEnvironment.ApplicationName;// 应用名称
                    string EnvironmentName = webHostEnvironment.EnvironmentName;// 这个是环境名
                    configure.AddConsul($"{ApplicationName}/appsettings.{EnvironmentName}.json", options =>
                    {
                        options.ConsulConfigurationOptions = c =>
                        {
                            c.Datacenter = consulDataCenter;
                            c.Address = new Uri(consulAddress);
                        };
                        //热加载配置文件
                        options.ReloadOnChange = true;
                    });
                }); 
                #endregion
            });

    7、增加一个action

    运行与验证

    1、启动项目,访问http://192.168.2.119:551/api/Department/GetString,得到结果

    2、项目右键属性->调试,修改环境变量为Production(也可以在launchSettings.json中修改)

    3、再启动并访问http://192.168.2.119:551/api/Department/GetString,得到结果

    说明确实是从Consul中获取配置,并且可以切换环境

    本文代码:https://files.cnblogs.com/files/shousiji/net5_configcenter.rar

  • 相关阅读:
    gitment Error:validation failed错误解决办法
    Hexo博客yilia主题添加Gitment评论系统
    用DateTime的ParseExact方法解析特殊的日期时间
    C#中的日期处理函数
    SQL,Linq,Lambda之间的转换练习
    Windows Azure Platform 系列文章目录
    Linq查询表达式
    EF框架的三种工作方式
    jQuery UI 实现图片循环显示,常用于网站首页banner广告切换
    jQuery UI Datepicker
  • 原文地址:https://www.cnblogs.com/shousiji/p/15292936.html
Copyright © 2011-2022 走看看