設定ファイルは、各アプリケーションサービスプログラムが共通して使用する機能です。元の端末アプリケーション時代から現在のメタバース時代に至るまで、設定は自然に存在しています。asp.net coreは、強力な設定ファイルアクセスメカニズムを提供しており、MVC APIでもMiniAPIでも、使用方法は同じです。
フレームワークのデフォルト設定ファイルはappsettings.jsonで、json形式で独自の複雑な設定を保存できます:
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"AllowedHosts": "*",
"ConnectionStrings": {
"ExamDatabase": "server=.;database=Exam;uid=sa;pwd=sa;"
},
"AppInfo": {
"Name": "Mini & Powerful",
"Version": "v1.0.0",
"Author": {
"Architect": "桂素伟-A",
"Programmer": "桂素伟-P",
"Designer": "桂素伟-D"
},
"Features": [ "Learn MiniAPI", "Architect Element" ]
}
}
簡単に値を取得します
var architect = builder.Configuration.GetSection("AppInfo:Author:Architect").Value;
var features1 = builder.Configuration.GetSection("AppInfo:Features:1").Value;
record
でバインドします
public record AppInfoRecord(string? Name, string? Version, AuthorRecord? Author, string[]? Features);
public record AuthorRecord(string? Architect, string? Programmer, string? Designer);
バインド
var authorRecord = new AuthorRecord(null, null, null);
var appInfoRecord = new AppInfoRecord(null, null, authorRecord, null);
builder.Configuration.GetSection("AppInfo").Bind(appInfoRecord);
class
でバインドします
public class AppInfo
{
public string? Name { get; set; }
public string? Version { get; set; }
public Author? Author { get; set; }
public string[]? Features { get; set; }
}
public class Author
{
public string? Architect { get; set; }
public string? Programmer { get; set; }
public string? Designer { get; set; }
}
バインド
var appInfo = new AppInfo();
builder.Configuration.GetSection("AppInfo").Bind(appInfo);
record
とclass
でバインドすると、それぞれに利点があります。record
による定義は、コードがシンプルでバインドがやや複雑になります。一方、class
の定義はやや複雑で、バインド時にシンプルです。
IConfigurationから設定を取得します。
ルーティングメソッドで設定情報を取得できます。
app.MapGet("/getappinfo", (IConfiguration config) =>
{
return config.GetSection("AppInfo:Name").Value;
});
ルーティングから設定ファイルを取得します。
最初は注入します。
var authorRecord = new AuthorRecord(null, null, null);
var appInfoRecord = new AppInfoRecord(null, null, authorRecord, null);
builder.Configuration.GetSection("AppInfo").Bind(appInfoRecord);
builder.Services.AddSingleton(appInfoRecord);
設定データを取得します。
app.MapGet("/appinfo", (AppInfoRecord appinfo) =>
{
return appinfo;
});
他の形式の設定ファイルを読む
myconfig.ini
[iniconfig]
key1=value1
key2=value2
設定ファイルをロードし、値を取得します。
builder.Host.ConfigureAppConfiguration((hostingContext, config) =>{
config.AddIniFile("myconfig.ini",
optional: true,
reloadOnChange: true);
});
var key1 = builder.Configuration.GetSection("iniconfig:key1").Value;
(Translated by GPT)