c# - 차이 - web config 설정




App.config 또는.net의 web.config에서 설정 읽기 (14)

C # 클래스 라이브러리에서 ASP.NET 웹 응용 프로그램 또는 Windows Forms 응용 프로그램에서 DLL을 참조하는지 여부에 따라 web.config 또는 app.config 파일에서 설정을 읽을 수 있어야합니다.

나는 그것을 발견했다.

ConfigurationSettings.AppSettings.Get("MySetting")

작동하지만이 코드는 Microsoft에 의해 사용되지 않는 것으로 표시되었습니다.

내가 사용해야한다고 읽었습니다 :

ConfigurationManager.AppSettings["MySetting"]

그러나 System.Configuration.ConfigurationManager 클래스는 C # 클래스 라이브러리 프로젝트에서 사용할 수없는 것으로 보입니다.

누구든지이 일을하는 가장 좋은 방법이 무엇인지 압니까?


App.config 파일을 DLL에 추가 할 수 있습니다. 모든 dll은 실행중인 exe에 대한 구성 파일에서 구성을 가져 오기 때문에 App.Config는 실행 가능한 프로젝트에서만 작동합니다.

솔루션에 두 개의 프로젝트가 있다고 가정 해 보겠습니다.

  • SomeDll
  • SomeExe

문제는 someExe가 아닌 SomeDLL에 app.config를 포함한다는 사실과 관련 될 수 있습니다. SomeDll은 SomeExe 프로젝트에서 구성을 읽을 수 있습니다.


System.Configuration 어셈블리에 대한 참조를 프로젝트에 추가해야합니다.


구성에서 읽기 :

Config에 대한 참조를 추가해야합니다.

  1. 프로젝트의 "속성"열기
  2. "설정"탭으로 이동하십시오.
  3. "이름"과 "값"을 추가하십시오.
  4. 다음 코드를 사용하여 값 가져 오기 :

    문자열 값 = Properties.Settings.Default.keyname;

구성 저장 :

   Properties.Settings.Default.keyName = value;
   Properties.Settings.Default.Save();

나는 똑같은 문제를 안고 그냥 이런 식으로 읽었다.

System.Configuration.ConfigurationSettings.AppSettings["MySetting"]

나는 지금이 문제에 대한 픽스를 며칠 동안 찾으려고 노력 해왔다. web.config의 appsettings 태그 내에 키를 추가하여이 문제를 해결할 수있었습니다. 도우미를 사용할 때 .dll을 재정의해야합니다.

<configuration>
<appSettings>
<add key="loginUrl" value="~/RedirectValue.cshtml" />
<add key="autoFormsAuthentication" value="false"/>
</appSettings>
</configuration>

당신이 일하고 Pls 확인. NET 버전. 4보다 커야합니다. 그리고 System.Configuration 시스템 라이브러리를 애플리케이션에 추가해야합니다.


또한 formo 를 사용할 수 있습니다.

구성 :

<appSettings>
    <add key="RetryAttempts" value="5" />
    <add key="ApplicationBuildDate" value="11/4/1999 6:23 AM" />
</appSettings>

암호:

dynamic config = new Configuration();
var retryAttempts1 = config.RetryAttempts;                 // returns 5 as a string
var retryAttempts2 = config.RetryAttempts(10);             // returns 5 if found in config, else 10
var retryAttempts3 = config.RetryAttempts(userInput, 10);  // returns 5 if it exists in config, else userInput if not null, else 10
var appBuildDate = config.ApplicationBuildDate<DateTime>();

아래 예제 App.config의 경우 :

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <add key="countoffiles" value="7" />
    <add key="logfilelocation" value="abc.txt" />
  </appSettings>
</configuration>

아래 코드를 사용하여 위의 앱 설정을 읽었습니다.

using System.Configuration;

이미 System.Configuration에 대한 참조가 없으면 프로젝트에 System.Configuration에 대한 참조를 추가해야 할 수도 있습니다. 다음과 같이 값에 액세스 할 수 있습니다.

string configvalue1 = ConfigurationManager.AppSettings["countoffiles"];
string configvalue2 = ConfigurationManager.AppSettings["logfilelocation"];

희망이 도움이!


완전성을 위해 웹 프로젝트에만 사용할 수있는 또 다른 옵션이 있습니다.

System.Web.Configuration.WebConfigurationManager.AppSettings["MySetting"]

이것의 이점은 추가 참조가 필요 없기 때문에 일부 사람들에게 바람직 할 수 있습니다.


이 시도:

string keyvalue=System.Configuration.ConfigurationManager.AppSettings["keyname"];

web.config에서 다음 구조가 있어야합니다 :

<configuration>
<appSettings>
<add key="keyname" value="keyvalue" />
</appSettings>
</configuration>

클래스 라이브러리를 마우스 오른쪽 버튼으로 클릭하고 메뉴에서 "참조 추가"옵션을 선택하십시오. 마지막으로 .NET 탭에서 System.Configuration을 선택하십시오. 이것은 귀하의 프로젝트에 System.Configuration dll을 포함합니다.


프레임 워크 4.5 및 4.6 업데이트; 다음은 더 이상 작동하지 않습니다.

string keyvalue=System.Configuration.ConfigurationManager.AppSettings["keyname"];

이제 Properties를 통해 Setting 클래스에 액세스하십시오.

string keyvalue= Properties.Settings.Default.keyname;

자세한 내용은 응용 프로그램 설정 관리 를 참조하십시오.


항상 모든 구성 값에 대해 선언 된 typesafe 속성을 사용하여 IConfig 인터페이스를 만듭니다. 그런 다음 Config 구현 클래스가 System.Configuration에 대한 호출을 래퍼합니다. 모든 System.Configuration 호출은 이제 한 곳에서 훨씬 쉽고 깨끗해졌으며 사용중인 필드를 유지 관리하고 추적하여 기본값을 선언합니다. 공용 데이터 형식을 읽고 구문 분석 할 수있는 개인 도우미 메서드 집합을 작성합니다.

IoC 프레임 워크를 사용하면 인터페이스를 클래스 생성자에 전달하기 만하면 어디서든 IConfig 필드에 액세스 할 수 있습니다. 또한 단위 테스트에서 IConfig 인터페이스 모의 구현을 만들 수 있으므로 이제 App.config 또는 Web.config 파일을 건드리지 않고도 다양한 구성 값과 값 조합을 테스트 할 수 있습니다.


web.config 는 웹 응용 프로그램과 함께 사용됩니다. 기본적으로 web.config 에는 웹 응용 프로그램에 필요한 몇 가지 구성이 있습니다. 웹 응용 프로그램 아래의 각 폴더에 대해 web.config 를 가질 수 있습니다.

app.config 는 Windows 응용 프로그램에 사용됩니다. <appname>.exe.config 으로 응용 프로그램을 빌드하면 자동으로 <appname>.exe.config 로 이름이 <appname>.exe.config 파일은 응용 프로그램과 함께 제공되어야합니다.

동일한 방법을 사용하여 두 설정 파일의 app settings 값을 호출 할 수 있습니다.

System.Configuration.ConfigurationSettings.AppSettings["Key"]




appsettings