본문 바로가기

ASP.NET&C#/ASP.NET MVC

[ASP.NET CORE/MVC] 홈페이지 제작 #3 파일 읽기로 간단하게 init파일 모듈 만들기(프로퍼티 파일)

[ASP.NET CORE/MVC] 홈페이지 제작 #3 파일 읽기로 간단하게 init파일 모듈 만들기(프로퍼티 파일)

 

프로젝트 환경

OS : Windows 10

IDE : Visual Studio Code 1.69.1

.Net SDK : 6.0.302

.Net Runtime : .NetCore.App 6.0.7

DataBase : PostgreSQL 14

 

안녕하세요 미나라이 입니다.

이번에는 프로젝트 개발을 하면서 간단한 설정값 등을 저장 할 수 있는 init파일을 만들어 보겠습니다.

 

ASP.NET에서는 기본적으로 이러한 설정파일을 관리해주는 기능을 제공해 주고 있는데요

 

리소스 파일 만들기 - .NET

.NET 앱의 리소스 파일을 만듭니다. 문자열, 이미지 또는 개체 데이터가 포함된 XML 파일이나 프로그래밍 방식으로 문자열 리소스, XML 또는 이진 파일을 사용하여 텍스트 파일을 작성합니다.

docs.microsoft.com

위의 기능을 사용하지 않고 이번에는 단순하게 파일 읽기로 기능을 구현해 보도록 하겠습니다.

 

기본 사양

파일명 : init.config

인코딩 : utf-8

1. KEY==VALUE로 구분
2. 취득한 값은 Dictionary<String, String> 형식으로 저장

3. KEY와 VALUE사이에 공백 존재시 공백 제거
4. #로 시작하는 행은 주석처리
5. 중복된 KEY가 존재할 경우 상위에 지정한 값을 보존(하위값은 버려짐)
6. 파일의 내용을 수정 할 경우 어플리케이션 재시작 필요

경로지정

먼저 Const파일을 하나 만들어서 init.config파일을 보존할 경로를 지정합니다.

저는 프로젝트의 루트 경로에 보존했습니다. 

Const.cs

namespace CinemaProject.Common;

public static class Const
{
    /// <summary>
    /// Init Config File Path
    /// </summary>
	public const String INIT_CONFIG_PATH = @"init.config";
    
    /// <summary>
    /// Init Config Const(Sample)
    /// </summary>
    public static String DB_CONFIG = "DBCONFIG";
}

init파일생성

그냥 아무 문서파일을 생성해서 파일명을 바꿔주고 내용을 추가하였습니다.

init.config

Config클래스 작성

init.config파일의 내용을 읽고 내용을 취득 할 수 있는 클래스를 작성해줍니다.

Config.cs

using System.Text;
using log4net;
namespace CinemaProject.Common;

public static class Config
{
    private static readonly log4net.ILog logger = LogManager.GetLogger(typeof(Config));
    public static Dictionary<String, String>? INIT_CONFIG;

    /// <summary>
    /// Read IninConfig
    /// </summary>
    public static void ReadInitConfig() {
        try
        {
            logger.Info("===== Start Read InitConfig =====");
            using(StreamReader file = new StreamReader(Const.INIT_CONFIG_PATH, Encoding.GetEncoding("utf-8")))
            {
                String? line;
                INIT_CONFIG = new Dictionary<string, string>();
                while((line = file.ReadLine()) != null)  
                {
                    if(String.IsNullOrEmpty(line)) continue;
                    if(line.StartsWith("#")) continue;

                    String[] item = line.Split("==");
                    String key = item[0].Trim();
                    String value = item[1].Trim();
                    if(!INIT_CONFIG.ContainsKey(item[0]))
                    {
                        INIT_CONFIG.Add(key, value);
                    }
                }
            }
            logger.Info("===== End Read InitConfig =====");
        }
        catch (Exception)
        {
            logger.Info("===== Fail Read InitConfig =====");
            throw;
        }
    }

    /// <summary>
    /// Get ConfigValue
    /// </summary>
    /// <param name="key"></param>
    /// <returns></returns>
    public static string GetConfigValue(string key) {

        string value = string.Empty;
        if(INIT_CONFIG != null)
        {
            if(INIT_CONFIG[key] != null)
            {
                value = INIT_CONFIG[key];
            }
        }
        return value;
    }
}

소스 중간에 로그를 출력하는 부분을 기술하였는데 로그 출력 방법은 아래 포스팅을 참고 해 주세요

 

[ASP.NET CORE/MVC] 홈페이지 제작 #2 Log4net설정하기

[ASP.NET CORE/MVC] 홈페이지 제작 #2 Log4net설정하기 프로젝트 환경 OS : Windows 10 IDE : Visual Studio Code 1.69.1 .Net SDK : 6.0.302 .Net Runtime : .NetCore.App 6.0.7 DataBase : PostgreSQL 14..

nameybs.tistory.com

init파일 읽기

ASP.NET MVC프로젝트가 처음 기동될 때 읽을 수 있도록 아래 파일에 설정하도록 합니다.

Program.cs

// Read initConfig
Config.ReadInitConfig();

init파일에 지정한 값 취득하기

아래와 같은 방법으로 취득하면 됩니다.

Config.GetConfigValue("TEST");

출력값 확인

내용을 잘 읽었는지 로그를 출력해서 확인 해 봅시다.

init.config

init.config에 지정한 값이 log에잘 출력되는것을 확인 할 수 있습니다.

이상으로 간단하게 ASP.NET CORE MVC에서 init파일을 만드는 방법에 대해서 알아보았습니다.

728x90
반응형