ASP.NET 으로 개발 할 때는 WebApplication builder가 해당 파일을 읽어와서 ConfigurationManager 클래스로 접근을 제공해 주기 때문에 보통 따로 json 설정 파일을 구성해서 따로 파일을 읽어온다음 특정 class로 Deserialize해서 사용하지는 않습니다.
하지만, 설정 항목이 몇 개 안되는 경우에는 문제가 없지만 조금 복잡하거나 property수가 많은 경우에는 정의된 class에 맵핑된 instance를 사용하는게 개발할 때 훨씬 편리하죠.
예를들어 설정파일이 아래와같을 때,
appsettings.json
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"AllowedHosts": "*",
"MyConfig": {
"Host": "localhost",
"Port": 4500
}
}
Host와 Port의 값을 가져올려면 아래와 같은 코드가 필요하죠
var host = builder.Configuration["MyConfig:Host"];
var port = int.Parse(builder.Configuration["MyConfig:Port"]);
이걸 MyConfig라는 class를 선언한 다음 appsettings.json의 "MyConfig" section을 MyConfig class의 instance로 casting해서 사용 하려면 아래와 같은 방법으로 가능합니다.
public class MyConfig
{
public string Host { get; set; }
public int Port { get; set; }
}
using Newtonsoft.Json.Linq;
var myconfig = builder.Configuration.GetSection("MyConfig").Get<MyConfig>();
var host = myconfig.Host;
var port = myconfig.Port;
property 수가 많거나 nested property가 많은 경우 이런식으로 modeling을 해서 encapsulation된 instance를 사용하는 편이 개발할 때 훨씬 편리합니다.
'Development > ASP.Net' 카테고리의 다른 글
[ASP.Net] ASP.Net 6 에서 모든 Origin을 허용하는 CORS 설정 (1) | 2023.01.25 |
---|---|
[ASP.Net] ASP.Net core 6 프로젝트 파일에서 wwwroot 폴더의 모든 파일 포함시키기 (0) | 2023.01.18 |
[ASP.NET] WebAPI 프로젝트에서 wwwroot 폴더의 index.html로 기본 라우팅 시키기 (0) | 2023.01.18 |
[ASP.NET] ASP.Net core 6 Kestrel 기본 호스팅 주소 및 포트 변경하기 (0) | 2023.01.18 |
[ASP.NET] ASP.Net core 6에서 NLog 사용하기 (0) | 2023.01.17 |