C# app.config ? web.config? 두 파일의 호환성

2024. 2. 8. 20:13프로그래밍

728x90

C# 에서 애플리케이션을 만들면 해당 솔루션 밑에 app.config 파일이 생성 됩니다.

이 파일을 이용해서 애플리케이션에 정보를 전달 할 수가 있습니다.

C# 환경에서 .NET 애플리케이션을 만들 경우 web.config 파일이 생성 됩니다.

 

자, 그럼 이런 문제가 발생 할 수 있습니다.

  • 현재 만들어진 애플리케이션을 라이브러리로 전환하고,
  • 내가 만든 .NET 웹서비스 환경에서 해당 라이브러리를 사용하고 싶다.
  • 만들어진 애플리케이션은 다른 라이브러리 솔루션(예: SOAP 서비스)에 의존성이 있다.

 

위의 경우에는 만들어 놓은 app.config 환경 설정을 그대로 web.config에 이식해야 할 수도 있습니다.

이 문제에 대한 해결 책을 찾다가 다음 스택오버플로우 문서를 찾았습니다.

 

 

applicationSettings and Web.config

I have a DLL that provides logging that I use for WebForms projects and now wish to use it in an ASP.Net MVC 2 project. Some aspects of that DLL are configured in app.config: <configuration>...

stackoverflow.com

 

전체 내용은 다음과 같이 WebForm 으로 구성한 애플리케이셔의 app.config 파일이 존재하고 있습니다.

<configuration>
    <configSections>
            <section name="Tools.Instrumentation.Properties.Settings" 
                     type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" 
                     requirePermission="false" />
        </sectionGroup>
    </configSections>

 <applicationSettings>
        <Tools.Instrumentation.Properties.Settings>
            <setting name="LogLevel" serializeAs="String">
                <value>DEBUG</value>
            </setting>
            <setting name="AppName" serializeAs="String">
                <value>MyApp</value>
            </setting>
            <setting name="Port" serializeAs="String">
                <!--value>33333</value-->
                <value>0</value>
            </setting>
        </Tools.Instrumentation.Properties.Settings>
    </configuration>

 

이 dll 파일을 ASP .NET MVC2 프로젝트에서 사용하고 싶어서 위의 설정을 그대로 사용 했더니

다음과 같은 오류 메시지가 발생 했다는 것입니다.

Unrecognized configuration section applicationSettings

 

위의 설정을 web.config에 맞추기 위해서는 어떻게 해야 할까요? 가 질문이고 다음은 위의 질문에 대한 솔루션입니다.

<configSections>
    <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
        <section name="Tools.Instrumentation.Properties.Settings" 
                 type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" 
                 requirePermission="false" />
    </sectionGroup>
</configSections>

 

우선 위와 같이 configSections/ sectionGroup에 해당 태그 혹은 엘리먼트를 등록 해 주어야 한다는 것입니다.

그런다음 해당 섹션이 등록 되었으므로 바로 사용 할 수 있을 것입니다.

 <applicationSettings>
        <Tools.Instrumentation.Properties.Settings>
            <setting name="LogLevel" serializeAs="String">
                <value>DEBUG</value>
            </setting>
            <setting name="AppName" serializeAs="String">
                <value>MyApp</value>
            </setting>
            <setting name="Port" serializeAs="String">
                <!--value>33333</value-->
                <value>0</value>
            </setting>
        </Tools.Instrumentation.Properties.Settings>
    </configuration>
728x90