asp.net core读取配置文件公共方法

原创 Laughing  2017-11-23 00:16  阅读 486 次 评论 0 条

在asp.net core中,我么在startup.cs或者控制器中可以通过依赖注入或者其他方法很方便的读取配置文件的内容,但是在实际项目开发过程中,我们肯定不是这么简单的处理。一般情况下,我们都会通过一个公共的方法完成配置文件的读取,有时候还需要将配置文件映射到对应的实体类,方便其他人员调用。

这里我们通过将公共方法放到单独的类库,让后将配置文件转换成强类型的实体类

首先我们添加对应的类库项目然后添加nuget包

对于如何创建项目,这里不再赘述,主要说明需要引入的包如下:

Microsoft.Extensions.Configuration
Microsoft.Extensions.Configuration.FileExtensions

修改配置文件

修改自己的配置文件,加入相应的配置信息,比如我的配置文件如下

  1. {  
  2.   "Logging": {  
  3.     "IncludeScopes"false,  
  4.     "LogLevel": {  
  5.       "Default""Warning"  
  6.     }  
  7.   },  
  8.   "SysConfig": {  
  9.     "LoginProvider""Cookie" //登陆提供者模式:Session、Cookie  
  10.   }  
  11. }  

根据配置文件建立实体类

  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Linq;  
  4. using System.Text;  
  5. using System.Threading.Tasks;  
  6.   
  7. namespace me.lisen.Bussiness.Entity  
  8. {  
  9.     public class SysConfig  
  10.     {  
  11.         public string LoginProvider { getset; } //登陆提供者模式:Session、Cookie  
  12.     }  
  13. }  

建立公共方法,获取配置文件

  1. /* 
  2.  * 获取配置文件 
  3.  * @lisen 
  4.  */  
  5. using System;  
  6. using System.Collections.Generic;  
  7. using System.Linq;  
  8. using System.Text;  
  9. using System.Threading.Tasks;  
  10. using System.Configuration;  
  11. using Microsoft.Extensions.Configuration;  
  12. using System.IO;  
  13. using Microsoft.Extensions.Configuration.Json;  
  14. using Microsoft.Extensions.DependencyInjection;  
  15. using Microsoft.Extensions.Options;  
  16. using me.lisen.Bussiness.Entity;  
  17.   
  18. namespace me.lisen.FrameworkCore.Util.config  
  19. {  
  20.     public static class ConfigManager  
  21.     {  
  22.         static IConfiguration config = null;  
  23.         static ConfigManager()  
  24.         {  
  25.             string currentClassDir = AppContext.BaseDirectory;  
  26.             if (config == null)  
  27.             {  
  28.                 config = new ConfigurationBuilder()  
  29.                     .SetBasePath(currentClassDir)  
  30.                     .AddJsonFile("appsettings.json"falsetrue)  
  31.                     .Add(new JsonConfigurationSource { Path = "appsettings.json", Optional = false, ReloadOnChange = true })  
  32.                     .Build();  
  33.             }  
  34.         }  
  35.   
  36.         /// <summary>  
  37.         /// 获取系统公共配置文件  
  38.         /// </summary>  
  39.         /// <typeparam name="T"></typeparam>  
  40.         /// <param name="key"></param>  
  41.         /// <returns></returns>  
  42.         public static T GetValue<T>() where T : classnew()  
  43.         {  
  44.             T sysConfig = new T();  
  45.             try  
  46.             {  
  47.                 config.GetSection("SysConfig").Bind(sysConfig);  
  48.             }  
  49.             catch (Exception ex)  
  50.             {  
  51.                 sysConfig = null;  
  52.             }  
  53.             return sysConfig;  
  54.         }  
  55.   
  56.         /// <summary>  
  57.         /// 获取单一节点配置文件  
  58.         /// </summary>  
  59.         /// <param name="key">节点,如果是多级节点需要按照:分隔的方式传递</param>  
  60.         /// <returns></returns>  
  61.         public static string GetValue(string key)  
  62.         {  
  63.             return config.GetSection(key).Value.ToString().Trim();  
  64.         }  
  65.     }  
  66. }  

界面调用

界面调用就比较简单了,在cshtml页面,直接调用公共方法,获取参数即可

本文地址:https://www.lisen.me/common-method-of-reading-configuration-file-from-asp-net-core.html
版权声明:本文为原创文章,版权归 木子网 所有,欢迎分享本文,转载请保留出处!

发表评论


表情