Asp.net Core与类库读取配置文件信息的方法
 更新时间:2018年12月03日 11:28:08   作者:HOYU_Z  

这篇文章主要给大家介绍了关于Asp.net Core与类库读取配置文件信息的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

前言
首先开一个脑洞,Asp.net core 被使用这么长时间了,但是关于配置文件(json)的读取,微软官方似乎并没有给出像.net framework读取web.config那样简单且完美。严重怀疑这是微软为了促进.net core 生态繁荣搞的一点小手段。
appsetting.Development.json (appsetting.json的内容和这个差不多,下面会讲到多环境使用)

{
“SettingPath”: {
“VideoFilePath”: “C:\\\\Users\\\\89275\\\\Desktop\\\\Projects\\\\mv”,
“FfmpegPath”: “C:/Users/89275/Desktop/Projects/mv/ffmpeg.exe”,
“FtpPath”: “192.168.254.1/videofile”,
“VirtualPath”: “/videoplay”
},
“RedisPath”:”192.168.0.108:6379″
}

看了很多Asp.net core 读取配置文件的博客,感觉都没有很好的解决问题。

最简单的就是在StartUp中通过Configuration[“SettingPath:VirtualPath”]的形式获取信息;
接下来就是在Controller中获去配置文件信息,在控制器中读取配置文件有两种方法。

第一种是在controller初始化的时候把IHostingEnvironment,IConfiguration传过来,然后把穿过来的值赋给controller中对应的变量,酒后就可以正常读取配置文件了(由于我是个菜逼,还没看明白系统启动的时候,这两个变量是怎么传给controller的)

public class HomeController : Controller
{
//环境变量
private readonly IHostingEnvironment hostingEnvironment;
private IConfiguration Configuration;
public HomeController(IHostingEnvironment hostingEnvironment, IConfiguration configuration)
{
this.hostingEnvironment = hostingEnvironment;
Configuration = configuration;
}

pubilc void GetRedisPath()
{
string redisPath = Configuration[“RedisPath”];
}
}

第二种是通过获取对象的方式读取配置文件,最近很多博客说的都是关于这个的。还是在controller初始化的时候把IOptions传进来(这里我还是没懂怎么传过来的/(ㄒoㄒ)/~~),然后把传过来的值赋值给Model的对象,然后就可以正常使用了。

这种方法需要在StartUp中的ConfigureServices中有添加

services.AddOptions();
//SettingPath极为Model
services.Configure<SettingPath>(Configuration.GetSection(“SettingPath”));

public class HomeController
{

public SettingPath settingPath;
private ILog log = LogManager.GetLogger(Startup.repository.Name, typeof(VideosController));
public HomeController(IOptions<SettingPath> option)
{
settingPath = option.Value;
}

public void GetVideoPath()
{
string path=SettingPath.VideoFilePath
}
}

这里因为我不了解,IOptions是怎么传进来的,所以不知道如果有需要只用两个或以上Model的情况该怎么处理。

.net core 读取配置文件公共类

前面几种方法之前都有用过,但是个人感觉用起来都不是很顺手。而且如果想要在一个类库中读取配置文件的话简直痛苦到不想理媳妇。
所以自己动手写了一个工具类

using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Options;
using System;

namespace Common
{
public class ConfigurationHelper
{
public IConfiguration config { get; set; }
public ConfigurationHelper()
{
IHostingEnvironment env = MyServiceProvider.ServiceProvider.GetRequiredService<IHostingEnvironment>();
config = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile(“appsettings.json”, optional: true, reloadOnChange: true)
.AddJsonFile($”appsettings.{env.EnvironmentName}.json”, optional: true)
.AddEnvironmentVariables()
.Build();
}
public T GetAppSettings<T>(string key) where T : class, new()
{
var appconfig = new ServiceCollection()
.AddOptions()
.Configure<T>(config.GetSection(key))
.BuildServiceProvider()
.GetService<IOptions<T>>()
.Value;
return appconfig;
}
}
//我比较喜欢单独放这个类,但是这样放更明显
public class MyServiceProvider
{
public static IServiceProvider ServiceProvider { get; set; }
}
}

使用这个类的话需要在StartUp的Configure中添加

MyServiceProvider.ServiceProvider = app.ApplicationServices;

然后就可以在任何地方使用此类读取配置文件信息了,而且由于ConfigurationHelper初始化时已经默认加载环境变量,所以同时具备多环境功能。

string path = new ConfigurationHelper().config[“RedisPath”];
SettingPath pathss = new ConfigurationHelper().GetAppSettings<SettingPath>(“SettingPath”);

参考

docs.microsoft.com/zh-cn/aspnet/core/fundamentals/configuration/?view=aspnetcore-2.1
docs.microsoft.com/zh-cn/aspnet/core/fundamentals/environments?view=aspnetcore-2.1
www.cnhackhy.com/article/125674.htm

总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对华域联盟的支持。

您可能感兴趣的文章:ASP.NET core Web中使用appsettings.json配置文件的方法.NET Core简单读取json配置文件.NET Core读取配置文件方式详细总结.NET Core 2.0迁移小技巧之web.config 配置文件示例详解实现core文件自动生成配置文件的方法.NET Core2.1如何获取自定义配置文件信息详解如何在ASP.NET Core类库项目中读取配置文件详解.Net Core读取Json配置文件的实现示例asp.net core配置文件加载过程的深入了解ASP.NET Core中修改配置文件后自动加载新配置的方法详解

core
类库
配置文件

相关文章
.net core下配置访问数据库操作本篇文章给大家详细分享了在.net core下配置访问数据库的相关操作过程以及代码实现过程,有兴趣的朋友参考下。 2018-03-03
asp.net无法获取iis目录的问题解决方法本文介绍了Asp.Net无法获取IIS拾取目录的解决办法,需要的朋友可以参考下 2014-02-02
ASP.NET页面进行GZIP压缩优化的几款压缩模块的使用简介及应用测试 2008-01-01
asp.net实现的MD5加密和DES加解密算法类完整示例这篇文章主要介绍了asp.net实现的MD5加密和DES加解密算法类,结合完整实例形式分析了asp.net实现MD5加密算法及DES加密和解密的相关技巧,需要的朋友可以参考下 2016-07-07
在 .NET Core 中使用 Diagnostics (Diagnostic Source) 记录跟踪今天给大家讲一下在 .NET Core 2 中引入的全新 DiagnosticSource 事件机制,为什么说是全新呢? 在以前的 .NET Framework 有心的同学应该知道也有 Diagnostics,那么新的 .NET Core 中有什么变化呢?跟随小编一起看看吧 2021-06-06
moq 的常用使用方法(推荐)这篇文章主要介绍了moq 的常用使用方法的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下 2016-11-11
.Net Compact Framework开发小技巧 推荐这篇文章对于.Net Compact Framework开发的朋友有一定的帮助,内容比较实用。 2009-02-02
asp.net下用Aspose.Words for .NET动态生成word文档中的数据表格导出word 文档,要求这个文档的格式不是固定的,用户可以随便的调整,导出内容中的数据表格列是动态的,例如要求导出姓名和性别,你就要导出这两列的数据,而且这个文档不是导出来之后再调整而是导出来后已经是调整过了的。 2010-04-04
asp.net文件上传功能(单文件,多文件,自定义生成缩略图,水印)上传功能,是大家经常用到了,可能每一个项目都可以会用到。网上到处都有上传功能的代码。比我写的好的有很多。我这里也仅是分享我的代码。 2011-09-09
运行asp.net时出现 http错误404-文件或目录未找到问题描述: http错误404-文件或目录未找到的解决方法 2009-03-03

最新评论

声明:本站(华域联盟www.cnhackhy.com)所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。