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