[HowTo] asp.net core 設定 Configuration 的方法

Quick note for setting configuration in .net core.

透過建立 Class 來作為 Configuration 的容器

1
2
3
4
5
6
7
public class MongoConnectionOptions
{
public const string name = "MongoConnection";

public string ConnectionString { get; set; } = String.Empty;
public string Database { get; set; } = String.Empty;
}
  1. line 3: 單純是方便設定使用 (Option)
  2. line 5 ~ 6 需與 appsettings.json 想設定的 section 內的欄位一致

appsettings.json 依此範例內會有一個 MongoConnection 的 section 並且有 ConnectionStringDatabase 的設定

1
2
3
4
5
6
{
"MongoConnection": {
"ConnectionString":"",
"Database":""
}
}

預設 asp.net core 新建的範本,會使用 top function 的模式建立,所以 program.cs 檔案會變成這樣

1
2
3
4
5
6
7
8
9
10
11
using apiWithMongo.Models;

var builder = WebApplication.CreateBuilder(args);

// Add services to the container.
builder.Services.Configure<MongoConnectionOptions>(builder.Configuration.GetSection(MongoConnectionOptions.name));

builder.Services.AddControllers();
...


  • 透過 line 6 的寫法,我們可以將 appsettings.json 內的某一個 section 值與 class 關連設定起來

設定完成後,在任何地方如果要使用這組設定值時,可以透過 IOptions<T> 的方式取得

1
2
3
4
5
6
7
public class Demo 
{
private readonly MongoConnectionOptions _options;
public Demo(IOptions<MongoConnectionOptions> options){
_options = options.Value;
}
}

Reference