[ASP.netコア]アプリケーション構成ファイルappsettings.jsonを読むには二つの方法があります

ASP.netコアに設定を読みます

序文

、何のWeb.config構成ファイルが存在しない以前のconnectionStrings、のappSettingsを設定し、読み方を知らない:ただ一点を混乱ASP.netコア出会いの始め方

この記事では、簡単に説明します

練習

※この記事では、ASP.netコア2.1バージョンの一例です

ASP.netコアアプリケーション構成ファイルの代わりにappsettings.json、コンテンツJSON形式

右のプロジェクトから→→新規プロジェクトを追加します

検索キーワード「アプリケーション」ルートにプロジェクトパスに追加し、見つけることができます

それを変更しない方が良いappsettings.json維持するために名前を付け、なぜならWebHost.CreateDefaultBuilder(でのProgram.csファイル付き)について

それから彼はappsettings.jsonに次のデータを書きました

※注意ASP.netコア2.1、Visual Studioの2017 15.8.3verは、デフォルトのファイルはappsettings.jsonないUTF-8エンコーディング形式を追加しましたので、私は中国をサポートしていない、中国をサポートするトラブルから抜け出す(またはマイクロソフトがXDの改訂を待ち続け)する方法を持っています、下記の記事をご覧ください

{
  "ConnectionStrings": {
    "DefaultConnection": "Server=(localdb)\MSSQLLocalDB;Database=_CHANGE_ME;Trusted_Connection=True;MultipleActiveResultSets=true"
  },
  "Email": "[email protected]",
  "ThemeColor": "red",
  "isRunSSL": true,
  "MaxNumber": 10
}

あなたは、データベース接続文字列を読み取るためにEntity Frameworkのコアを使用する必要がある場合は、私の他の記事↓を参照してください。

Entity Frameworkのコア2データベースの第1の実施形態のアクセスデータを使用して[ASP.netコア2](ClassLibraryで分離されたモデルデータ項目)

設定ファイルには、主に二つの方法で、道を読まれます

1.同様以前WebConfigurationManager、読取モードキー値に戻す(IConfigurationインターフェイスを使用して)

のコントローラー↓サンプルコードを参照してください。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc; 
using Microsoft.Extensions.Options;
using StarterM.Models;
/*引用命名空间*/
using Microsoft.Extensions.Configuration;

namespace StarterM.Controllers
{
    public class HomeController : Controller
    {
        
        private readonly IConfiguration _config;//这很像ASP.net的WebConfigurationManager
        //在构造函数使用相依性注入建立IConfiguration
        public HomeController(IConfiguration config)
        {
            this._config = config; 
        }

        public IActionResult Index()
        {
            ViewBag.config = this._config;
            return View();
        }
    }
}

表示↓

 
@using Microsoft.Extensions.Configuration  
 
@{
    Layout = null;
} 
 


     

 
    @{
        IConfiguration config = (IConfiguration)ViewBag.config; 
    
  
  
  • DefaultConnection: @config.GetConnectionString("DefaultConnection")
  • Email: @(config.GetValue ("Email"))
  • ThemeColor: @(config.GetValue ("ThemeColor"))
  • isRunSSL: @(config.GetValue ("isRunSSL"))
  • MaxNumber: @(config.GetValue ("MaxNumber"))
}

結果↓

2.強力にリードモードを入力しました

あなたが設定する方法がわからない場合は、自分でクラスを確立するためにコンテンツをJSONに応じて、その後、JSONコンテンツにjson2csharp appsettings.jsonするために、サイトに行ってまで投稿

以下は、私の新しいクラスファイル↓です

接着要把appsettings.json里的数据倒进刚刚声明的类里,在Startup.cs↓

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.Encodings.Web;
using System.Text.Unicode;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using StarterM.Models;

namespace StarterM
{
    public class Startup
    {
        /// 
        /// 读取 appsettings.json 专用 
        /// 
        public IConfiguration _config { get; }
        public Startup(IConfiguration config)
        {
            this._config = config;
        } 
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddMvc(); 
            //加这行
            services.Configure
  
  
   
   (this._config); 
        } 
        public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
             
            app.UseStaticFiles();
            app.UseMvcWithDefaultRoute();

        }
    }
}

  
  

Controller↓

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
/*引用命名空间*/
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Options;//加这行
using StarterM.Models;

namespace StarterM.Controllers
{
    public class HomeController : Controller
    {

        private readonly IOptions
  
  
   
    _opt; //加这行
        private readonly IConfiguration _config;
        //使用相依性注入
        public HomeController(IOptions
   
   
    
     opt, IConfiguration config)
        {
            this._config = config;
            this._opt = opt;//加这行
        }

        public IActionResult Index()
        {
            ViewBag.config = this._config;
            MyAppConfig objConfig = this._opt.Value;//注意这行
            ViewBag.ObjConfig = objConfig;
            return View();
        }
    }
}
   
   
  
  

View↓

@using StarterM.Models

  
  
@using Microsoft.Extensions.Configuration
@{
    Layout = null;
}



    



    
  
  
↓使用强类型对象读取应用程序配置文件案
@{ MyAppConfig objConfig = (MyAppConfig)ViewBag.ObjConfig;
  • DefaultConnection: @objConfig.ConnectionStrings.DefaultConnection
  • Email: @objConfig.Email
  • ThemeColor: @objConfig.ThemeColor
  • isRunSSL: @objConfig.isRunSSL
  • MaxNumber: @objConfig.MaxNumber
}
↓使用IConfiguration读取应用程序配置文件案
@{ IConfiguration config = (IConfiguration)ViewBag.config;
  • DefaultConnection: @config.GetConnectionString("DefaultConnection")
  • Email: @(config.GetValue ("Email"))
  • ThemeColor: @(config.GetValue ("ThemeColor"))
  • isRunSSL: @(config.GetValue ("isRunSSL"))
  • MaxNumber: @(config.GetValue ("MaxNumber"))
}

执行结果↓

刚才有提过,默认appsettings.json由于不是UTF-8编码,所以如果有下面的中文内容

执行结果就会变成乱码↓

解决办法:先用记事本notepad开启appsettings.json档,然后变更使用UTF-8编码后再覆盖存档。

重新建置项目后再执行一次网页,中文就可以正常显示了~

最后留意一下,如果采用强类型对象读取appsettings.json方式,由于组态数据注入对象时间点的关系

网站发布到IIS后如果有修改appsettings.json的话,记得IIS站台要重新启动才会生效

※使用IConfiguration读取appsettings.json的话,则无需此动作

※2019.4.8追记:.Net Core Console貌似无法从项目直接加入appsettings.json,那就手动自己加入吧XD

请参考:[.Net Core] 在.Net Core Console中读取应用程序组态档 appsettings.json

自行从Nuget把 Microsoft.Extensions.Configuration.Json 加入参考后,照着程序写,就可以读取appsettings.json

原文:大专栏  [ASP.net Core] 两种方式读取应用程序配置文件 appsettings.json


おすすめ

転載: www.cnblogs.com/chinatrump/p/11505334.html