2014-12-16 3 views
-1

webservce 코딩에서 web.config에서 상수 이름을 호출하고 싶습니다.web.config에서 상수 이름을 호출하십시오.

namespace Service.AppCode.Common.Service 
{ 
    [ServiceContract(Namespace = Constants.Namespace)] 
    public interface IService1 
    { 
     [OperationContract] 
     void DoWork(); 
    } 
} 

이 코드 :

namespace Service.AppCode.Common 
{ 
    public class Constants 
    { 
     public const string Namespace = ConfigurationManager.AppSettings["DefaulIP"]; 
    } 
} 

그것을 말할 것이다 :

표현이 'Service.AppCode.Common.Constants.Namespace에 할당되는 는이 코드를 '는 일정해야합니다.

is it web.config에서 호출 할 수 있습니까?

+3

컴파일 타임에 상수가 설정되고 런타임에 구성 파일을 읽을 수 없습니다. –

답변

1

상수는 컴파일 타임에 정의되고 결과 코드에 직접 포함되며 응용 프로그램이 실행될 때 초기화되지 않습니다. (그리고 변경할 수 없습니다하는 설정 값과는 달리 매우 변경할 수 있습니다.)

그러나이보고 ... 그냥 고정 불변의 값을 원하는처럼

public class Constants 
{ 
    public readonly static string Namespace = 
     ConfigurationManager.AppSettings["DefaulIP"]; 
} 

것 같습니다. 그게 충분히 쉽습니다 ...

public class Constants 
{ 
    public static string Namespace 
    { 
     get { return ConfigurationManager.AppSettings["DefaulIP"]; } 
    } 
} 

해당 값은 호출 될 때마다 구성에서 값을 동적으로 읽습니다. 그리고 그것은 단지 getter이기 때문에 읽기 전용입니다. config에서 한 번만 읽으려면 값을 캐시하십시오.

public class Constants 
{ 
    private static string _namespace = null; 
    public static string Namespace 
    { 
     get 
     { 
      if (_namespace == null) 
       _namespace = ConfigurationManager.AppSettings["DefaulIP"]; 
      return _namespace; 
     } 
    } 
} 
+0

이것은 앱 설정을 추가하는 방법에 대한 Microsoft의 문서입니다. 여기에는 설정 파일을 설정하는 방법이 포함됩니다. http://msdn.microsoft.com/en-us/library/system.configuration.configurationmanager.appsettings%28v=vs.110%29.aspx – tdbeckett

+1

또한이 앱 설정과 같은 간단한 항목에 대해서는 괜찮지 만 앱 설정은 빨리 커요. 설정의 복잡성에 따라 config 섹션을 사용하는 것이 좋습니다. http://msdn.microsoft.com/en-us/library/2tw134k3%28v=vs.140%29.aspx – tdbeckett

관련 문제