.NetCoer服务WorkerService部署后从配置文件读取内容

本篇解决WorkerService项目本地运行时可以获取到appsettings.json节点参数内容,发布到服务器后获取到的是空值。
解决方式有二选择喜欢的就好。

方式一:
配置文件如图
在这里插入图片描述

1.创建一个承载类ConfigString.cs

public class ConfigString
    {
        public static ConfigString configString = new ConfigString();
        /// <summary>
        /// 数据库连接字符串
        /// </summary>
        public string MySqlConnection { get; set; }
        /// <summary>
        /// 每日执行时间-24小时制
        /// </summary>
        public string RunTime { get; set; }
    }

2.到Program给承载类绑定数据

.ConfigureServices((hostContext, services) =>
{
	IConfiguration configuration = hostContext.Configuration;
	ConfigString.configString.MySqlConnection = configuration.GetConnectionString("MySqlConnection");
	ConfigString.configString.RunTime = configuration.GetSection("RunTime").Value;
	services.AddHostedService<Worker>();
});

3.使用

var sqlConnection = ConfigString.configString.MySqlConnection
var runTime = ConfigString.configString.RunTime

方式二:
在其它文件读自定义字段如
在这里插入图片描述
1.上面的有的这里就不再表述了,

.ConfigureServices((hostContext, services) =>
{
	List<string> strs = new List<string>() { "MySqlConnection", "RunTime" };
	var res = getyaml(strs);
	ConfigString.configString.MySqlConnection = res[0];
	ConfigString.configString.RunTime = res[1];
	services.AddHostedService<Worker>();
});

2.读取.yaml文件节点方法。

		public static List<string> GetYaml(List<string> key)
        {
            try
            {
                var path = Directory.GetCurrentDirectory();
                string filePath = path + "/yamlfile.yaml";
                FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
                StreamReader reader = new StreamReader(fs, System.Text.Encoding.Default);
                var yaml = new YamlStream();
                yaml.Load(reader);
                var mapping = (YamlMappingNode)yaml.Documents[0].RootNode;
                List<string> resStr = new List<string>();
                foreach (var item in key)
                {
                    string str = mapping[item].ToString();
                    resstr.Add(str);
                }
                return resStr;
            }
            catch (Exception e)
            {
                throw;
            }
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值