最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

ASP.NET?CORE讀取json格式配置文件

 更新時(shí)間:2022年03月13日 14:41:31   作者:.NET開(kāi)發(fā)菜鳥(niǎo)  
這篇文章介紹了ASP.NET?CORE讀取json格式配置文件的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

在.Net Framework中,配置文件一般采用的是XML格式的,.NET Framework提供了專門(mén)的ConfigurationManager來(lái)讀取配置文件的內(nèi)容,.net core中推薦使用json格式的配置文件,那么在.net core中該如何讀取json文件呢?

一、在Startup類中讀取json配置文件

1、使用Configuration直接讀取

看下面的代碼:

public IConfiguration Configuration { get; }

Configuration屬性就是.net core中提供的用來(lái)讀取json文件。例如:

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{

            string option1 = $"option1 = {this.Configuration["Option1"]}";
            string option2 = $"option2 = {this.Configuration["Option2"]}";
            string suboption1 = $"suboption1 = {this.Configuration["subsection:suboption1"]}";
            // 讀取數(shù)組
            string name1 = $"Name={this.Configuration["student:0:Name"]} ";
            string age1 = $"Age= {this.Configuration["student:0:Age"]}";
            string name2 = $"Name={this.Configuration["student:1:Name"]}";
            string age2 = $"Age= {this.Configuration["student:1:Age"]}";
            // 輸出
            app.Run(c => c.Response.WriteAsync(option1+"\r\n"+option2+ "\r\n"+suboption1+ "\r\n"+name1+ "\r\n"+age1+ "\r\n"+name2+ "\r\n"+age2));
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            else
            {
                app.UseHsts();
            }

            app.UseHttpsRedirection();
            app.UseMvc();
}

結(jié)果:

2、使用IOptions接口

1、定義實(shí)體類

public class MongodbHostOptions
{
        /// <summary>
        /// 連接字符串
        /// </summary>
        public string Connection { get; set; }
        /// <summary>
        /// 庫(kù)
        /// </summary>
        public string DataBase { get; set; }

        public string Table { get; set; }
}

2、修改json文件

在appsettings.json文件中添加MongodbHost節(jié)點(diǎn):

{
  "Logging": {
    "LogLevel": {
      "Default": "Warning"
    }
  },
  "option1": "value1_from_json",
  "option2": 2,
  "subsection": {
    "suboption1": "subvalue1_from_json"
  },
  "student": [
    {
      "Name": "Gandalf",
      "Age": "1000"
    },
    {
      "Name": "Harry",
      "Age": "17"
    }
  ],
  "AllowedHosts": "*",
  //MongoDb
  "MongodbHost": {
    "Connection": "mongodb://127.0.0.1:27017",
    "DataBase": "TemplateDb",
    "Table": "CDATemplateInfo"
  }
}

注意:

MongodbHost里面的屬性名必須要和定義的實(shí)體類里面的屬性名稱一致。

3、在StartUp類里面配置

添加OptionConfigure方法綁定

private void OptionConfigure(IServiceCollection services)
{
      //MongodbHost信息
      services.Configure<MongodbHostOptions>(Configuration.GetSection("MongodbHost"));
}

在ConfigureServices方法中調(diào)用上面定義的方法:

public void ConfigureServices(IServiceCollection services)
{
     // 調(diào)用OptionConfigure方法
     OptionConfigure(services);           
     services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
}

在控制器中使用,代碼如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Options;

namespace ReadJsonDemo.Controllers
{
    [Route("api/[controller]")]
    [ApiController]
    public class MongodbController : ControllerBase
    {
        private readonly MongodbHostOptions _mongodbHostOptions;

        /// <summary>
        /// 通過(guò)構(gòu)造函數(shù)注入
        /// </summary>
        /// <param name="mongodbHostOptions"></param>
        public MongodbController(IOptions<MongodbHostOptions> mongodbHostOptions)
        {
            _mongodbHostOptions = mongodbHostOptions.Value;
        }

        [HttpGet]
        public async Task Get()
        {
           await Response.WriteAsync("Connection:" + _mongodbHostOptions.Connection + "\r\nDataBase;" + _mongodbHostOptions.DataBase + "\r\nTable:" + _mongodbHostOptions.Table);
        }
    }
}

運(yùn)行結(jié)果:

3、讀取自定義json文件

在上面的例子中都是讀取的系統(tǒng)自帶的appsettings.json文件,那么該如何讀取我們自己定義的json文件呢?這里可以使用ConfigurationBuilder類。

實(shí)例化類

var builder = new ConfigurationBuilder();

 添加方式1

builder.AddJsonFile("path", false, true);

 其中path表示json文件的路徑,包括路徑和文件名。

添加方式2

builder.Add(new JsonConfigurationSource {Path= "custom.json",Optional=false,ReloadOnChange=true }).Build()

具體代碼如下:

private void CustomOptionConfigure(IServiceCollection services)
{
            IConfiguration _configuration;
            var builder = new ConfigurationBuilder();
            // 方式1
            //_configuration = builder.AddJsonFile("custom.json", false, true).Build();
            // 方式2
            _configuration = builder.Add(new JsonConfigurationSource {Path= "custom.json",Optional=false,ReloadOnChange=true }).Build();
            services.Configure<WebSiteOptions>(_configuration.GetSection("WebSiteConfig"));
}

ConfigureServices方法如下:

public void ConfigureServices(IServiceCollection services)
{
            // 調(diào)用OptionConfigure方法
            OptionConfigure(services);
            CustomOptionConfigure(services);
            services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
}

控制器代碼如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Options;

namespace ReadJsonDemo.Controllers
{
    [Route("api/[controller]")]
    [ApiController]
    public class MongodbController : ControllerBase
    {
        private readonly MongodbHostOptions _mongodbHostOptions;

        private readonly WebSiteOptions _webSiteOptions;

        /// <summary>
        /// 通過(guò)構(gòu)造函數(shù)注入
        /// </summary>
        /// <param name="mongodbHostOptions"></param>
        public MongodbController(IOptions<MongodbHostOptions> mongodbHostOptions,IOptions<WebSiteOptions> webSiteOptions)
        {
            _mongodbHostOptions = mongodbHostOptions.Value;
            _webSiteOptions = webSiteOptions.Value;
        }

        [HttpGet]
        public async Task Get()
        {
           await Response.WriteAsync("Connection:" + _mongodbHostOptions.Connection + "\r\nDataBase;" + _mongodbHostOptions.DataBase + "\r\nTable:" + _mongodbHostOptions.Table);
            await Response.WriteAsync("\r\n");
            await Response.WriteAsync("WebSiteName:" + _webSiteOptions.WebSiteName + "\r\nWebSiteUrl;" + _webSiteOptions.WebSiteUrl);
        }
    }
}

二、在類庫(kù)中讀取json文件

在上面的示例中都是直接在應(yīng)用程序中讀取的,那么如何在單獨(dú)的類庫(kù)中讀取json文件呢?看下面的示例代碼:

using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Options;
using System;
using System.Collections.Generic;
using System.IO;
using System.Text;

namespace Common
{
    public class JsonConfigHelper
    {
        public static T GetAppSettings<T>(string fileName, string key) where T : class, new()
        {
            // 獲取bin目錄路徑
            var directory = AppContext.BaseDirectory;
            directory = directory.Replace("\\", "/");

            var filePath = $"{directory}/{fileName}";
            if (!File.Exists(filePath))
            {
                var length = directory.IndexOf("/bin");
                filePath = $"{directory.Substring(0, length)}/{fileName}";
            }

            IConfiguration configuration;
            var builder = new ConfigurationBuilder();
            
            builder.AddJsonFile(filePath, false, true);
            configuration = builder.Build();

            var appconfig = new ServiceCollection()
                .AddOptions()
                .Configure<T>(configuration.GetSection(key))
                .BuildServiceProvider()
                .GetService<IOptions<T>>()
                .Value;

            return appconfig;
        }
    }
}

注意:這里要添加如下幾個(gè)程序集,并且要注意添加的程序集的版本要和.net core web項(xiàng)目里面的程序集版本一致,否則會(huì)報(bào)版本沖突的錯(cuò)誤

  • 1、Microsoft.Extensions.Configuration
  • 2、Microsoft.Extensions.configuration.json
  • 3、Microsoft.Extensions.Options
  • 4、Microsoft.Extensions.Options.ConfigurationExtensions
  • 5、Microsoft.Extensions.Options

json文件如下:

{
  "WebSiteConfig": {
    "WebSiteName": "CustomWebSite",
    "WebSiteUrl": "https:localhost:12345"
  },
  "DbConfig": {
    "DataSource": "127.0.0.1",
    "InitialCatalog": "MyDb",
    "UserId": "sa",
    "Password": "123456"
  }
}

DbHostOptions實(shí)體類定義如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace ReadJsonDemo
{
    public class DbHostOptions
    {
        public string DataSource { get; set; }

        public string InitialCatalog { get; set; }

        public string UserId { get; set; }

        public string Password { get; set; }
    }
}

注意:這里的DbHostOptions實(shí)體類應(yīng)該建在單獨(dú)的類庫(kù)中,這里為了演示方便直接建在應(yīng)用程序中了。

在控制器中調(diào)用:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Common;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Options;

namespace ReadJsonDemo.Controllers
{
    [Route("api/[controller]")]
    [ApiController]
    public class MongodbController : ControllerBase
    {
        private readonly MongodbHostOptions _mongodbHostOptions;

        private readonly WebSiteOptions _webSiteOptions;

        /// <summary>
        /// 通過(guò)構(gòu)造函數(shù)注入
        /// </summary>
        /// <param name="mongodbHostOptions"></param>
        public MongodbController(IOptions<MongodbHostOptions> mongodbHostOptions,IOptions<WebSiteOptions> webSiteOptions)
        {
            _mongodbHostOptions = mongodbHostOptions.Value;
            _webSiteOptions = webSiteOptions.Value;
        }

        [HttpGet]
        public async Task Get()
        {
            DbHostOptions dbOptions = JsonConfigHelper.GetAppSettings<DbHostOptions>("custom.json", "DbConfig");
            await Response.WriteAsync("DataSource:" + dbOptions.DataSource + "\r\nInitialCatalog;" + dbOptions.InitialCatalog+ "\r\nUserId:"+dbOptions.UserId+ "\r\nPassword"+dbOptions.Password);
            await Response.WriteAsync("\r\n");
            await Response.WriteAsync("Connection:" + _mongodbHostOptions.Connection + "\r\nDataBase;" + _mongodbHostOptions.DataBase + "\r\nTable:" + _mongodbHostOptions.Table);
            await Response.WriteAsync("\r\n");
            await Response.WriteAsync("WebSiteName:" + _webSiteOptions.WebSiteName + "\r\nWebSiteUrl;" + _webSiteOptions.WebSiteUrl);           
        }
    }
}

運(yùn)行結(jié)果:

到此這篇關(guān)于ASP.NET CORE讀取json格式配置文件的文章就介紹到這了。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • C#聲明方法實(shí)例說(shuō)明

    C#聲明方法實(shí)例說(shuō)明

    方法(Method)是一個(gè)已命名的語(yǔ)句集。如果以前使用過(guò)其他編程語(yǔ)言,如C或Visual Basic等,就可以將方法視為函數(shù)或者子程序相似的東西。每個(gè)方法都有一個(gè)名稱和一個(gè)主體。方法名應(yīng)該是一個(gè)有意義的標(biāo)識(shí)符,它應(yīng)描述出方法的用途(如CalculateIncomeTax)。方法主體包含了調(diào)用方法時(shí)實(shí)際執(zhí)行的語(yǔ)句。你可以為大多數(shù)方法提供一些數(shù)據(jù)來(lái)進(jìn)行處理,并讓它返回一些信息(通常是處理結(jié)果)。方法是一種基本的、功能強(qiáng)大的編程機(jī)制。
    2008-04-04
  • .NET中的字符串駐留池介紹

    .NET中的字符串駐留池介紹

    這篇文章介紹了.NET中的字符串駐留池,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-03-03
  • ASP.NET中 Panel 控件的使用方法

    ASP.NET中 Panel 控件的使用方法

    Panel 控件用作其它控件的容器,其實(shí)Panel本質(zhì)就是一個(gè)DIV,本文主要介紹Panel控件的使用方法。
    2016-04-04
  • ASP.NET?Core中間件用法與官方常用中間件介紹

    ASP.NET?Core中間件用法與官方常用中間件介紹

    這篇文章介紹了ASP.NET?Core中間件用法與官方常用中間件,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-03-03
  • .Net?Core微服務(wù)rpc框架GRPC通信實(shí)際運(yùn)用

    .Net?Core微服務(wù)rpc框架GRPC通信實(shí)際運(yùn)用

    這篇文章介紹了.Net?Core微服務(wù)rpc框架GRPC通信實(shí)際運(yùn)用,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-01-01
  • ASP.NET2.0+SQL Server2005構(gòu)建多層應(yīng)用

    ASP.NET2.0+SQL Server2005構(gòu)建多層應(yīng)用

    ASP.NET2.0+SQL Server2005構(gòu)建多層應(yīng)用...
    2006-12-12
  • 析構(gòu)函數(shù)的作用 什么是析構(gòu)函數(shù)

    析構(gòu)函數(shù)的作用 什么是析構(gòu)函數(shù)

    這篇文章主要講述了析構(gòu)函數(shù)的概念、原理、功能以及定義格式,析構(gòu)函數(shù)是C#程序設(shè)計(jì)中比較重要的概念,需要的朋友可以參考一下
    2007-12-12
  • .net6引入autofac框架

    .net6引入autofac框架

    這篇文章介紹了.net6引入autofac框架的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-12-12
  • .Net Core使用SignalR實(shí)現(xiàn)斗地主游戲

    .Net Core使用SignalR實(shí)現(xiàn)斗地主游戲

    本文詳細(xì)講解了.Net Core使用SignalR實(shí)現(xiàn)斗地主游戲的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-01-01
  • .NET6一些常用組件的配置及使用

    .NET6一些常用組件的配置及使用

    本文詳細(xì)講解了.NET6一些常用組件的配置及使用方法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-12-12

最新評(píng)論

丰顺县| 株洲市| 五原县| 定边县| 淮南市| 金门县| 兖州市| 璧山县| 延长县| 新和县| 西吉县| 体育| 甘洛县| 五河县| 锦州市| 沙雅县| 永新县| 卓尼县| 芮城县| 安庆市| 泰安市| 阳山县| 石泉县| 德江县| 米易县| 壤塘县| 巧家县| 麻江县| 岑巩县| 社旗县| 江西省| 汽车| 乐平市| 若羌县| 望江县| 桐梓县| 昌平区| 肥城市| 建始县| 中宁县| 子洲县|