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; }
|
- line 3: 單純是方便設定使用 (Option)
- line 5 ~ 6 需與
appsettings.json
想設定的 section 內的欄位一致
appsettings.json
依此範例內會有一個 MongoConnection
的 section 並且有 ConnectionString
和 Database
的設定
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);
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