2012-02-21 3 views
1

우리는 매우 유사한 web.config 파일을 가진 수많은 웹 사이트를 보유하고 있습니다.Web.Config 파일 및 위치

각 웹 사이트의 루트 디렉토리 앞에 하나의 구성 파일에 중복 구성을 중앙화 할 수 있습니까? 또는 유일한 옵션은 machine.config입니까?

GAC에서 어셈블리 참조를 중앙 집중화하려고합니다.

구조 :

  • 포함하는 디렉토리
    • 웹 사이트 1 디렉토리
    • 웹 사이트 2 디렉토리
    • 웹 사이트 3 디렉토리 위의 모든 사이트에 대한
    • Web.config 파일

답변

0

machine.config, app/web.config 및 user.config 수준 외에 설정 파일을 상속받지 못했습니다. 그러나 모든 구성 섹션 (configSection 기반)의 configSource 속성을 사용하여 서비스 끝점, 클라이언트 끝점, 바인딩, 연결 문자열 등과 같은 공통 파일을 포함 할 수 있습니다. VS 인텔리 센스가 지원하지 않는 것으로 표시하더라도 작동합니다.

<configuration> 

    <system.serviceModel> 
     <services configSource="Services.config" /> 
     <client configSource="Client.config" /> 
     <bindings configSource="Bindings.config" /> 
     <behaviors configSource="Behaviors.config" /> 
    </system.serviceModel> 

    <pages configSource="pages.config"/> 

</configuration> 

구성 원본 파일은 응용 프로그램 폴더 또는 아래 폴더에 있어야합니다. 올라가거나 절대 경로가 없습니다. 그러나 VS2010에서 이러한 한계를 극복하는 트릭이 있습니다. 기존 파일을 링크로 추가하고 "Copy to Output Directory"속성을 변경해야합니다. 이렇게하면 절대 경로 파일이 configSource에서 참조 할 수있는 위치에서 응용 프로그램 폴더로 복사됩니다. 이전 버전의 VS에서는 포스트 빌드 이벤트에서 파일을 복사하는 것이 가능하지만 덜 우아합니다.

주로 WCF 설정을 집중시키는 경우에는 코드 내 구성이 있습니다. 이것의 큰 장점은 VS에서 컴파일 타임 확인 및 리펙토링 지원을받는 것입니다. 이것이 많이 들리지 않는다면 더 큰 WCF 프로젝트에서 설정 파일 관리가 특히 당신이 무언가를 바꿀 필요가있을 때 악몽이라고 확신 할 수 있습니다. 이 방법을 사용하면 모든 서비스, 끝점, 바인딩 등이 정의 된 공통 어셈블리를 만들어 WCF 설정을 중앙 집중화하는 것이 매우 쉽습니다. 단점은 재 컴파일없이 WCF 설정을 변경할 가능성이 느리다는 것입니다. 그러나 이러한 설정이 자주 변경되지 않으면 유혹적인 대안입니다.

+0

어떻게 이러한 configSource를 참조합니까? 너는 완전한 길을 열어 줄 수 있니? 예 :

+0

이것은 상대적이어야하며 올라가지 않아야합니다. 그러나 프로젝트에 파일 링크를 추가하고 항상 복사로 표시하여 문제를 해결할 수 있습니다. 링크는 다른 드라이브에서도 전체 경로가 될 수 있습니다. –

0

당신은 CONFIG \의 Web.config

\ 또는 IIS에 당신이 포함하는 구성 할 경우 프레임 워크 \ \

여기서 % SystemRoot % \ Microsoft.NET에있는 Web.config의를 사용할 수 있습니다 디렉토리를 메인 웹 사이트로 사용하고 응용 프로그램으로 웹 사이트 디렉토리를 배치하면 기본 웹 사이트에 web.config를 삽입하여 언급 한 구조를 가질 수 있습니다.