첨부 실행 코드는 나눔고딕코딩 폰트를 사용합니다.
728x90
반응형
728x170

TestProject.zip
다운로드

▶ sample.xml

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <TestKey>TestValue2</TestKey>
    <Position>
        <Title>Editor2</Title>
        <Name>Smith2</Name>
    </Position>
    <Logging>
        <LogLevel>
            <Default>Information</Default>
            <Microsoft>Warning</Microsoft>
        </LogLevel>
    </Logging>
</configuration>

 

728x90

 

▶ Program.cs

using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Hosting;

namespace TestProject
{
    /// <summary>
    /// 프로그램
    /// </summary>
    public class Program
    {
        //////////////////////////////////////////////////////////////////////////////////////////////////// Method
        ////////////////////////////////////////////////////////////////////////////////////////// Static
        //////////////////////////////////////////////////////////////////////////////// Public

        #region 프로그램 시작하기 - Main(argumentArray)

        /// <summary>
        /// 프로그램 시작하기
        /// </summary>
        /// <param name="argumentArray">인자 배열</param>
        public static void Main(string[] argumentArray)
        {
            CreateHostBuilder(argumentArray).Build().Run();
        }

        #endregion
        #region 호스트 빌더 생성하기 - CreateHostBuilder(argumentArray)

        /// <summary>
        /// 호스트 빌더 생성하기
        /// </summary>
        /// <param name="argumentArray">인자 배열</param>
        /// <returns>호스트 빌더</returns>
        public static IHostBuilder CreateHostBuilder(string[] argumentArray) =>
            Host.CreateDefaultBuilder(argumentArray)
                .ConfigureAppConfiguration
                (
                    (context, configuration) =>
                    {
                        var environment = context.HostingEnvironment;

                        configuration.AddXmlFile
                        (
                            "sample.xml",
                            optional : true,
                            reloadOnChange : true
                        );

                        configuration.AddXmlFile
                        (
                            $"sample.{environment.EnvironmentName}.xml",
                            optional : true,
                            reloadOnChange : true
                        );

                        configuration.AddEnvironmentVariables();

                        if(argumentArray != null)
                        {
                            configuration.AddCommandLine(argumentArray);
                        }
                    }
                )
                .ConfigureWebHostDefaults
                (
                    builder =>
                    {
                        builder.UseStartup<Startup>();
                    }
                );
        }

        #endregion
    }
}

 

300x250

 

▶ appsettings.json

{
    "TestKey"  : "TestValue1",
    "Position" :
    {
        "Title" : "Editor1",
        "Name"  : "Smith1"
    },
    "Logging" :
    {
        "LogLevel" :
        {
            "Default"                    : "Information",
            "Microsoft"                  : "Warning",
            "Microsoft.Hosting.Lifetime" : "Information"
        }
    },
    "AllowedHosts" : "*"
}

 

▶ Controllers/TestController.cs

using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Configuration;
using System.Text;

namespace TestProject.Controllers
{
    /// <summary>
    /// 테스트 컨트롤러
    /// </summary>
    public class TestController : Controller
    {
        //////////////////////////////////////////////////////////////////////////////////////////////////// Field
        ////////////////////////////////////////////////////////////////////////////////////////// Private

        #region Field

        /// <summary>
        /// 구성
        /// </summary>
        private IConfiguration configuration;

        #endregion

        //////////////////////////////////////////////////////////////////////////////////////////////////// Constructor
        ////////////////////////////////////////////////////////////////////////////////////////// Public

        #region 생성자 - TestController(configuration)

        /// <summary>
        /// 생성자
        /// </summary>
        /// <param name="configuration">구성</param>
        public TestController(IConfiguration configuration)
        {
            this.configuration = configuration;
        }

        #endregion

        //////////////////////////////////////////////////////////////////////////////////////////////////// Method
        ////////////////////////////////////////////////////////////////////////////////////////// Public

        #region 인덱스 페이지 처리하기 - Index()

        /// <summary>
        /// 인덱스 페이지 처리하기
        /// </summary>
        /// <returns>액션 결과</returns>
        public IActionResult Index()
        {
            string testKey                = this.configuration["TestKey"                 ];
            string title                  = this.configuration["Position:Title"          ];
            string name                   = this.configuration["Position:Name"           ];
            string loggingLogLevelDefault = this.configuration["Logging:LogLevel:Default"];

            StringBuilder stringBuilder = new StringBuilder();

            stringBuilder.AppendLine($"TestKey                      : {testKey}"               );
            stringBuilder.AppendLine($"Position / Title             : {title}"                 );
            stringBuilder.AppendLine($"Position / Name              : {name}"                  );
            stringBuilder.AppendLine($"Logging / LogLevel / Default : {loggingLogLevelDefault}");

            return Content(stringBuilder.ToString());
        }

        #endregion
    }
}
728x90
반응형
그리드형(광고전용)

'C# > ASP.NET MVC' 카테고리의 다른 글

[C#/ASP.NET MVC/.NETCORE] IConfiguration 인터페이스 : GetChildren 메소드를 사용해 자식 구성 하위 섹션 구하기  (0) 2020.10.22
[C#/ASP.NET MVC/.NETCORE] IConfiguration 인터페이스 : GetSection 메소드를 사용해 구성 하위 섹션 구하기  (0) 2020.10.22
[C#/ASP.NET MVC/.NETCORE] ConfigurationBinder 클래스 : GetValue 확장 메소드를 사용해 특정 키의 단일 설정 값 구하기  (0) 2020.10.22
[C#/ASP.NET MVC/.NETCORE] MemoryConfigurationBuilderExtensions 클래스 : AddInMemoryCollection 확장 메소드를 사용해 메모리 구성 공급자 등록하기  (0) 2020.10.22
[C#/ASP.NET MVC/.NETCORE] KeyPerFileConfigurationBuilderExtensions 클래스 : AddKeyPerFile 확장 메소드를 사용해 파일별 키 구성 공급자 등록하기  (0) 2020.10.22
[C#/ASP.NET MVC/.NETCORE] JsonConfigurationExtensions 클래스 : AddJsonFile 확장 메소드를 사용해 JSON 구성 공급자 등록하기  (0) 2020.10.21
[C#/ASP.NET MVC/.NETCORE] IniConfigurationExtensions 클래스 : AddIniFile 확장 메소드를 사용해 INI 구성 공급자 등록하기  (0) 2020.10.21
[C#/ASP.NET MVC/.NETCORE] 구성 공급자  (0) 2020.10.21
[C#/ASP.NET MVC/.NETCORE] CommandLineConfigurationExtensions 클래스 : AddCommandLine 확장 메소드에서 스위치 매핑을 사용해 명령줄 구성 공급자 등록하기  (0) 2020.10.21
[C#/ASP.NET MVC/.NETCORE] CommandLineConfigurationExtensions 클래스 : AddCommandLine 확장 메소드를 사용해 명령줄 구성 공급자 등록하기  (0) 2020.10.21
Posted by icodebroker

댓글을 달아 주세요