.Net core mvc で appsettings.json の設定をコントローラーから利用する

1. DI を使ってappsettings.json の設定をコントローラーから利用する

HomeController.cs

using Microsoft.Extensions.Configuration;
        public IConfiguration _configuration { get; }
        public HomeController( IConfiguration Configuration )
        {
            _configuration = Configuration;
        }

これで Startup.cs と同じように appsettings.json の値が使用できます。

_configuration.GetConnectionString("<設定名>")


2. モデルを作成しappsettings.json の設定をコントローラーから利用する

● appsettings.json ファイルに設定を書き込む

appsettings.json

  "MySettings": {
    "KEY": "hogehoge",
    "SECRET": "fugafuga",
  }

● モデルファイル AppSetting.cs を作成する

「Models」フォルダを右クリックして新しいクラスを作成します
appsettings.json の中身をすべてコピーして「編集」→「形式を選択して貼り付け」→「JSONをクラスとして張り付ける」を実行すると時間が短縮できます。

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

namespace <あなたのプロジェクト名>.Models
{
    public class AppSettings
    {
        public Mysettings MySettings { get; set; }

        public class Mysettings
        {
            public string KEY{ get; set; }
            public string SECRET { get; set; }
        }

    }
}

● Startup.cs の書き換え

using <あなたのプロジェクト名>.Models;
using Microsoft.Extensions.Options;

を先頭に追加し、次のメソッドを書き換え

   public void ConfigureServices(IServiceCollection services)
        {
            services.AddMvc();
            services.Configure<AppSettings>(Configuration);
        }

● コントローラー HomeController.cs の書き換え

using <あなたのプロジェクト名>.Models;
using Microsoft.Extensions.Options;

を先頭に追加し、次のプライベート変数とコンストラクタを追加

        private readonly AppSettings appSettings;

        public HomeController(IOptions<AppSettings> optionsAccessor)
        {
            this.appSettings = optionsAccessor.Value;
        }

以上でコントローラーの各メソッドで this.appSettings から appsettings.json の値が参照できます。

No.1229
08/27 13:07

edit