欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

.Net Core库类项目跨项目读取配置文件

程序员文章站 2022-06-19 19:14:07
在项目开始之前我们可以先去了解一下IConfiguration接口,.Net Core Web应用程序类似于一个控制台,当程序运行到Startup时会自动注入IConfiguration,默认读取当前.Net Core Web应用程序中的appsettings.json文件。读取当前.Net Cor ......

在项目开始之前我们可以先去了解一下iconfiguration接口,.net core web应用程序类似于一个控制台,当程序运行到startup时会自动注入iconfiguration,默认读取当前.net core web应用程序中的appsettings.json文件。读取当前.net core web应用程序的配置文件可以自动直接注入,但如果我们需要使另一个类库项目读取到指定.net core web应用程序中的配置文件,需要怎么做?凭借asp.net core无处不在的“依赖注入”,我们可以在startup执行时将读取的配置信息注入到类库项目中,之后我们可以愉快的使用配置信息了

新建一个.net core的类库项目和.net core web应用程序,修改web应用程序中的appsettings.json文件加入数据库连接字符串用于之后的试验。

.Net Core库类项目跨项目读取配置文件

{
  "webconfig": {
    "oracleconnectionstring": "user id=fjh;password=fjh_123;data source=(description =(address_list =(address = (protocol = tcp)(host = localhost)(port = 1521)))(connect_data = (service_name = orcl)));pooling = true;max pool size = 800;min pool size = 1;connect timeout=5;"
  },
  "logging": {
    "loglevel": {
      "default": "warning"
    }
  },
  "allowedhosts": "*"
}

.net core的类库项目中新建一个静态类:configurationhelper.cs

使用iconfiguration接口需要添加依赖项:microsoft.extensions.configuration

using microsoft.extensions.configuration;

namespace read_configuration_file
{
    public class configurationhelper
    {
        private static iconfiguration _config;
        public static void configure(iconfiguration config)
        {
            _config = config;
        }
        /// <summary>
        /// 根据配置文件键读取对应的值
        /// </summary>
        /// <param name="key"></param>
        /// <returns></returns>
        public static string getconfigvaluebykey(string key)
        {
            var value = _config[key];
            return value;
        }
    }
}

创建一个静态字段_config用来存储配置信息,同时定义一个静态方式通过配置文件的键值获取对应的值。

.net core的类库项目中新建一个静态类:utilconfig.cs

创建一个只读静态字段oracleconnectionstring存储根据键值获得的配置文件的值

namespace read_configuration_file
{
    public static class utilconfig
    {
        public static string oracleconnectionstring => configurationhelper.getconfigvaluebykey("webconfig:oracleconnectionstring") == null ? "" : string.format(configurationhelper.getconfigvaluebykey("webconfig:oracleconnectionstring"));
    }
}

最关键的一步,修改.net core web应用程序中的startup.cs

我们需要将配置信息注入到类库项目,需要使用confiurationhelper类下的静态方法。在创建的.net core web应用程序的startup文件中调用configure方法,使用前不要忘了先引用类库项目

.Net Core库类项目跨项目读取配置文件

.Net Core库类项目跨项目读取配置文件

到这里为止,我们可以调用静态类utilconfig中的静态只读字段oracleconnectionstring愉快的使用.net core web应用程序的配置信息。

接下来我们来验证一下项目是否成功

.net core库类项目中新建一个类:connectionread

创建一个静态方法getconnectionstr()返回获取到的配置文件信息

namespace read_configuration_file
{
    public class connectionread
    {
        /// <summary>
        /// 定义一个静态方法获取连接字符串
        /// </summary>
        /// <returns></returns>
        public static string getconnectionstr()
        {
            var connstr = utilconfig.oracleconnectionstring;
            return connstr;
        }
    }
}

项目结构

.Net Core库类项目跨项目读取配置文件

.net core web项目中的homecontroller主页中调用这个静态方法,如果能正确读取到配置文件的值,那项目就成功了

.Net Core库类项目跨项目读取配置文件

修改一下主页

.Net Core库类项目跨项目读取配置文件

执行文件我们可以发现主页上显示了我们想要读取的数据库连接的配置信息。nice!成功

.Net Core库类项目跨项目读取配置文件