ASP.NET Core 类库中取读配置文件 appsettings.json

首先引用NuGet包

  1. Microsoft.Extensions.Configuration
  2. Microsoft.Extensions.Configuration.Json
  3. Microsoft.Extensions.DependencyInjection
  4. Microsoft.Extensions.Options
  5. Microsoft.Extensions.Options.ConfigurationExtensions

我们先来看一下appsettings.json文件

  1. {
  2. "Logging": {
  3. "IncludeScopes": false,
  4. "Debug": {
  5. "LogLevel": {
  6. "Default": "Warning"
  7. }
  8. },
  9. "Console": {
  10. "LogLevel": {
  11. "Default": "Warning"
  12. }
  13. }
  14. },
  15. "AppSupportDatabase": {
  16. "ConnectionString": "server=.;initial catalog=TestDB;user id=sa;password=123",
  17. "ProviderName": "System.Data.SqlClient"
  18. }
  19. }

我们想取ProviderName怎么办呢?首先新建ConfigManager

  1. public class ConfigManager
  2. {
  3. public string ProviderName { get; set; }
  4. public string ConnectionString { get; set; }
  5. }

GetAppsettings方法

  1. public T GetAppsettings<T>(string key) where T : class, new()
  2. {
  3. string keyDir = System.IO.Directory.GetCurrentDirectory();
  4. IConfiguration config = new ConfigurationBuilder()
  5. .SetBasePath(keyDir)
  6. .Add(new JsonConfigurationSource { Path = "appsettings.json", ReloadOnChange = true })
  7. .Build();
  8. var appconfig = new ServiceCollection()
  9. .AddOptions()
  10. .Configure<T>(config.GetSection(key))
  11. .BuildServiceProvider()
  12. .GetService<IOptions<T>>()
  13. .Value;
  14. return appconfig;
  15. }

调用例子

  1. GetAppsettings<ConfigManager>("AppSupportDatabase").ProviderName

出处:https://www.studenty.cn/?p=1094

==========================================

需要先引用官方的nuget包

①:Microsoft.Extensions.Configuration

②:Microsoft.Extensions.Options.ConfigurationExtensions

用户自定义json的配置文件

在这里我用的配置文件名称是appsettings.json

配置文件内容如图所示:

在Startup类中的Startup方法中编辑代码,我先把代码贴出来吧:

var builder = new ConfigurationBuilder()

.SetBasePath(env.ContentRootPath)

.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)

.AddEnvironmentVariables();

Configuration = builder.Build();

var connString = new ConnectionStrings();

Configuration.GetSection("ConnString").Bind(connString);

在代码中ConnectionStrings类是一个Model,然后你创建的变量connString已经被实例化了。你可以访问了

作者:奥斯卡的肌肤
链接:https://www.jianshu.com/p/a13a0194ff91
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

原文地址:https://www.cnblogs.com/mq0036/p/10957010.html

时间: 2024-11-09 08:28:52

ASP.NET Core 类库中取读配置文件 appsettings.json的相关文章

Asp.Net Core 进阶(一) —— 读取appsettings.json

我们以前在Asp.Net MVC中使用 System.Configuration.ConfigurationManager 来读取web.config文件.但是Asp.Net Core MVC已经没有web.config文件了,它的配置信息一般写在appsettings.json当中,那么我们怎么读取该文件呢? 在Asp.Net Core MVC中使用 Microsoft.Extensions.Options.ConfigurationExtensions 包来读取appsettings.jso

ASP.NET Core中的缓存[1]:如何在一个ASP.NET Core应用中使用缓存

.NET Core针对缓存提供了很好的支持 ,我们不仅可以选择将数据缓存在应用进程自身的内存中,还可以采用分布式的形式将缓存数据存储在一个“中心数据库”中.对于分布式缓存,.NET Core提供了针对Redis和SQL Server的原生支持.除了这个独立的缓存系统之外,ASP.NET Core还借助一个中间件实现了“响应缓存”,它会按照HTTP缓存规范对整个响应实施缓存.不过按照惯例,在对缓存进行系统介绍之前,我们还是先通过一些简单的实例演示感知一下如果在一个ASP.NET Core应用中如何

使用NuGet将我们的ASP.NET Core类库打包并将程序包(类库)发布到NuGet平台上进行管理

本章将和大家简单分享下如何使用NuGet将我们的ASP.NET Core类库打包并将程序包(类库)发布到NuGet平台上进行管理. 一.注册并登录NuGet平台 NuGet官网:https://www.nuget.org/ 此处我使用的是微软账号进行关联登录 登录成功后就可以管理个人信息了,此处就不做过多的描述了 二.下载nuget.exe文件进行ASP.NET Core类库打包 下载完成后如下: 接着修改类库版本等相关信息,点击类库右键属性并选择打包,如下所示: 修改完成后记得保存并重新生成

通过重建Hosting系统理解HTTP请求在ASP.NET Core管道中的处理流程[下]:管道是如何构建起来的?

在<中篇>中,我们对管道的构成以及它对请求的处理流程进行了详细介绍,接下来我们需要了解的是这样一个管道是如何被构建起来的.总的来说,管道由一个服务器和一个HttpApplication构成,前者负责监听请求并将接收的请求传递给给HttpApplication对象处理,后者则将请求处理任务委托给注册的中间件来完成.中间件的注册是通过ApplicationBuilder对象来完成的,所以我们先来了解一下这究竟是个怎样的对象.[本文已经同步到<ASP.NET Core框架揭秘>之中] [

如何在ASP.NET Core应用中实现与第三方IoC/DI框架的整合?

我们知道整个ASP.NET Core建立在以ServiceCollection/ServiceProvider为核心的DI框架上,它甚至提供了扩展点使我们可以与第三方DI框架进行整合.对此比较了解的读者朋友应该很清楚,针对第三方DI框架的整合可以通过在定义Startup类型的ConfigureServices方法返回一个ServiceProvider来实现.但是真的有这么简单吗? 一.ConfigureServices方法返回的ServiceProvider貌似没有用!? 我们可以通过一个简单的

asp.net core mvc中如何把二级域名绑定到特定的控制器上

由于公司的工作安排,一直在研究其他技术,所以一直没时间更新博客,今天终于可以停下手头的事情,写一些新内容了. 应用场景:企业门户网站会根据内容不同,设置不同的板块,如新浪有体育,娱乐频道,等等.有的情况下需要给不同的板块设置不同的二级域名,如新浪体育sports.sina.com.cn. 在asp.net core mvc中,如果要实现板块的效果,可能会给不同的板块建立不同的控制器(当然也有其他的技术,这里不讨论实现方式的好坏),在这种情况下,如何给控制器绑定上独有的二级域名,比如体育频道对应的

007.Adding a view to an ASP.NET Core MVC app -- 【在asp.net core mvc中添加视图】

Adding a view to an ASP.NET Core MVC app 在asp.net core mvc中添加视图 2017-3-4 7 分钟阅读时长 本文内容 1.Changing views and layout pages 修改视图和布局页 2.Change the title and menu link in the layout file 在布局文件中修改标题与菜单 3.Passing Data from the Controller to the View 从控制器向视图

在 ASP.NET Core 项目中实现小写的路由URL

在 ASP.NET MVC 早期版本中,我们可以通过在应用的 RegisterRoutes 方法中设置 routes.LowercaseUrls = true ; 来将页面的 URL 链接转小写.在 ASP.NET Core MVC 中,路由的配置类似与下面的代码: app.UseMvc(configureRoutes => { configureRoutes.MapRoute("Default", "{controller=App}/{action=Index}/{i

ASP.NET Core 集成测试中通过 Serilog 向控制台输出日志

日志是程序员的雷达,不仅在生产环境中需要,在集成测试环境中也需要,可以在持续集成失败后帮助定位问题.与生产环境不同,在集成测试环境中使用控制台输出日志更方便,这样可以通过持续集成 runner 执行 job 时的输出看到日志. 这篇博文简单记录一下我们在  asp.net core 集成测试中通过 serilog 向控制台输出日志的实现代码 var outputTemplate = "{Timestamp:HH:mm:ss.fff} [{Level:u3}] {SourceContext}{Ne