.Net Standard(.Net Core)实现获取配置信息

一、前言

在.Net Framework框架有专门获取webconfig配置的方法供我们使用,但是在.Net Core或者.Net Standard中没有可以直接使用的方法来获取配置文件信息,下面就来实现获取配置信息。

二、获取配置信息的实现

在.Net Core中,他的配置信息的载体是一个json文件,我们现在就计划所有项目(包含.Net Framework和.Net Standard(.Net Core)框架)都是json文件作为配置的载体。

首先通过Nuget加载如下的包:

Install-Package Microsoft.Extensions.Configuration
Install-Package Microsoft.Extensions.Configuration.Json
Install-Package Microsoft.Extensions.DependencyInjection
Install-Package Microsoft.Extensions.Options
Install-Package Microsoft.Extensions.Options.ConfigurationExtensions

现在我们使用json配置文件的内容有一下格式:

{
  "ConnectionStrings": {
    "CxyOrder": "Server=LAPTOP-AQUL6MDE\\MSSQLSERVERS;Database=CxyOrder;User ID=sa;Password=123456;Trusted_Connection=False;"
  },
  "Appsettings": {
    "SystemName": "PDF .NET CORE",
    "Date": "2017-07-23",
    "Author": "PDF"
  },
  "ServiceUrl": "https://www.baidu.com/getnews"
}

创建PFTConfiguration.cs文件,代码如下:

 public class PFTConfiguration
    {
        /// <summary>
        /// PFTConfiguration.Configuration.GetConnectionString("CxyOrder");
        /// PFTConfiguration.Configuration["ServiceUrl"];
        /// PFTConfiguration.Configuration["Appsettings:SystemName"];
        /// </summary>
        public static IConfiguration Configuration { get; set; }
        static PFTConfiguration()
        {
            Configuration = new ConfigurationBuilder()
            .Add(new JsonConfigurationSource { Path = "appsettings.json", ReloadOnChange = true })
            .Build();
        }

        /// <summary>
        /// 获取配置信息
        /// </summary>
        /// <param name="path">json文件类型</param>
        /// <typeparam name="T">返回实体类型</typeparam>
        /// <param name="key">json关键字</param>
        /// <returns></returns>
        public static T GetAppsettings<T>(string key, string path) where T : class, new()
        {
            try
            {
                if (string.IsNullOrWhiteSpace(path))
                {
                    throw new Exception("解析配置错误,配置文件路径为空");
                }
                if (string.IsNullOrWhiteSpace(key))
                {
                    throw new Exception("解析配置错误,配置key为空");
                }
                var config = new ConfigurationBuilder()
                    .SetBasePath(AppDomain.CurrentDomain.BaseDirectory)
                    .Add(new JsonConfigurationSource { Path = path, ReloadOnChange = true })
                    .Build();
                var appconfig = new ServiceCollection()
                    .AddOptions()
                    .Configure<T>(config.GetSection(key))
                    .BuildServiceProvider()
                    .GetService<IOptions<T>>()
                    .Value;
                return appconfig;
            }
            catch (Exception ex)
            {
                throw new Exception("解析配置(对象)异常", ex);
            }

        }

        /// <summary>
        /// 获取配置信息
        /// </summary>
        /// <param name="key">json关键字</param>
        /// <param name="path">json文件类型</param>
        /// <returns></returns>
        public static string GetAppsettings(string key, string path)
        {
            try
            {
                if (string.IsNullOrWhiteSpace(path))
                {
                    throw new Exception("解析配置错误,配置文件路径为空");
                }
                if (string.IsNullOrWhiteSpace(key))
                {
                    throw new Exception("解析配置错误,配置key为空");
                }
                var config = new ConfigurationBuilder()
                    .SetBasePath(AppDomain.CurrentDomain.BaseDirectory)
                    .Add(new JsonConfigurationSource { Path = path, ReloadOnChange = true, Optional = false })
                    .Build();
                var appconfig = config.GetSection(key).Value;
                return appconfig;
            }
            catch (Exception ex)
            {
                throw new Exception("解析配置(字符串)异常", ex);
            }
        }

    }
}

里面定义了3种获取方法

1、PFTConfiguration.Configuration["Appsettings:SystemName"] 文件路径默认为appsettings.json,然后通过节点来获取,这个方式有点类似于.Net Framework中获取配置的方法

2、PFTConfiguration.GetAppsettings<T>(string key, string path),他是获取指定配置文件,指定节点,以T对象的形式返回节点内容

3、PFTConfiguration.GetAppsettings(string key, string path),他是获取指定配置文件,指定节点,以字符串的形式返回节点内容

原文地址:https://www.cnblogs.com/snailblog/p/11565907.html

时间: 2024-10-28 21:18:10

.Net Standard(.Net Core)实现获取配置信息的相关文章

.net core 2.0 mvc 获取配置信息

mvc_core_config html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,lege

JavaWeb学习之Servlet(四)----ServletConfig获取配置信息、ServletContext的应用

[声明] 欢迎转载,但请保留文章原始出处→_→ 文章来源:http://www.cnblogs.com/smyhvae/p/4140877.html 联系方式:[email protected] [正文] 一.ServletConfig:代表当前Servlet在web.xml中的配置信息(用的不多) String getServletName()  -- 获取当前Servlet在web.xml中配置的名字 String getInitParameter(String name) -- 获取当前S

JavaWeb学习之Servlet(四)----ServletConfig获取配置信息、ServletContext的应用(转)

JavaWeb学习之Servlet(四)----ServletConfig获取配置信息.ServletContext的应用 [声明] 欢迎转载,但请保留文章原始出处→_→ 文章来源:http://www.cnblogs.com/smyhvae/p/4140877.html [正文] 一.ServletConfig:代表当前Servlet在web.xml中的配置信息(用的不多) String getServletName()  -- 获取当前Servlet在web.xml中配置的名字 String

jeasyopc放在tomcat上不能获取配置信息的问题

jeasyopc放在tomcat上不能获取配置信息,折腾了好久,是原代码中的一个问题,tomcat下找不到系统路径,所以导致找不到配置文件.</span> 你需要修改jeasyopc.jar下的javafish.clients.opc.property.PropertyLoader.java /** * Get properties for class (propsName) * * @param propsName class package * @return properties Pro

Servlet获取配置信息(ServletConfig)和ServletContext

ServletConfig ServletConfig:当Servlet容器初始化Servlet时,Servlet容器会给Servlet的init方法传入一个ServletConfig.ServletConfig封装可以通过@WebServlet或者部署描述符传给Servlet的配置信息.这样传入的每条信息就叫做一条初始参数,要在Servlet容器传给Servlet的init方法的ServletConfig中调用getInitParameter方法.getInitParameter的方法签名如下

JavaWeb学习记录(八)——servlet获取配置信息

jdbc.properties内容如下: jdbcUrl=jdbc\:mysql\://localhost\:3306/animaluser=rootpass=root servlet获取资源信息代码如下public class ResourceServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response)            throws Ser

python 模块 wmi 远程连接 windows 获取配置信息

测试工具应用: https://ask.csdn.net/questions/247013 wmi连接不上报错问题集 https://blog.csdn.net/xcntime/article/details/51596814 https://blog.csdn.net/wangbin1986/article/details/6756035 https://docs.microsoft.com/zh-tw/windows/desktop/WmiSdk/connecting-to-wmi-remo

《ASP.NET Core 高性能系列》关于.NET Core的配置信息的若干事项

1.配置文件的相关闲话 Core自身对于配置文件不是必须品,但由上文分析可知ASP.NET Core默认采用appsettings.json作为配置文件,关于配置信息的优先等级 命令行>环境变量>自我订制的配置(AddUserSecrets)>和当前环境相匹配的appsettings.json中的配置>大于appsettings.json中的配置 关于AddUserSecrets是什么这里简单一言以蔽之:每个开发人员有自己特性的配置数据,这些配置信息仅仅属于个人,不能提交给团队成员

.NET Core开发日志——配置

熟悉ASP.NET的开发者一定对web.config文件不陌生.在ASP.NET环境中,要想添加配置参数,一般也都会在此文件中操作.其中最常用的莫过于AppSettings与ConnectionStrings两项.而要在代码中获得文件中的配置信息,ConfigurationManager则是必不可少需要引入的程序集. 然而到了ASP.NET Core时代,存储与读取配置的方式都发生了改变. 如果对ASP.NET Core项目有所了解的话,应该会看到过appsettings.json这个文件.这里