문제

BL, 데이터 계층 및 궁극적으로 SQL Server 백엔드를 통해 호출하는 WCF 서비스가 있습니다. 내 서비스는 데이터베이스에서 데이터를 얻기 위해 다양한 방법/작업을 노출시킵니다. 또한 테스트를위한 호스트와 Windows 서비스 호스트를 구축했습니다. 이것이 제가 배포 할 계획입니다.

어제 테스트 배포를했을 때 서비스는 제대로 시작되었지만 데이터가 제대로 당겨 지는지 확인할 기회는 없었습니다. 내 배포 테스트 환경 (MS Server 2003)은 내 자신의 (노트북) 로컬 테스트 환경과는 완전히 다릅니다. Windows Service 프로젝트의 Bin Debug 내용을 서버에 복사하고 installutil.exe를 사용할 때 .exe를 참조하여 배포했습니다. 그러나 DL의 데이터 연결은 랩톱이 아닌 서버의 데이터베이스에 연결해야하므로 다른 연결 문자열을 가져와야합니다. 그러나 내가 배포 한 디렉토리에서 볼 수있는 유일한 app.config는 서비스 호스트를위한 것입니다. DL 및 BL과 같은 다른 프로젝트는 DLL과 같은 것이지만 App.Config도 없습니다. 그렇다면 DL의 app.config를 해당 환경의 올바른 것으로 어떻게 교체 할 수 있습니까? 나는 이것이 내가 단지 멈추지 않는 간단한 문제라고 확신한다.

관련 질문 : 나중에 TCP 대신에 HTTP 호스트를 사용하기로 결정하면 동일한 서비스를 운전하는 두 번째 호스트를 실행할 수 있습니까? IIS로 호스트를 배포하고 app.configs에 서비스 노드를 추가하면 되나요?

도움이 되었습니까?

해결책

App.config 호스팅 환경,이 경우 관리 된 Windows 서비스에는 모든 모듈에 대한 구성이 포함되어 있습니다. 마찬가지로 Web.config에는 IIS에서 호스팅하면 모든 구성이 포함되어 있습니다.

다른 팁

프로젝트를 배포 할 때 유일한 app.config/web.config는 실행 가능한 프로젝트 (웹 사이트/콘솔 앱/Windows Service/Windows Forms App. Project)에있는 것입니다. DLL 프로젝트 용 App.Configs는 BIN 디렉토리에 복사되지 않습니다.

DLL 프로젝트에서 구성 섹션을 복사하여 서비스 프로젝트 app.config에 넣어야합니다.

두 번째 질문의 경우 동일한 서비스 호스트에서 동일한 서비스에 대해 다른 엔드 포인트를 호스팅 할 수 있습니다. Windows 서비스/콘솔 앱에서 HTTP 엔드 포인트를 호스팅 할 수 있습니다. IIS 이외의 HTTP를 호스팅하는 경우 HTTP 포트를 열 수 있도록 사용자에게 권한을 부여해야 할 수도 있습니다. (보다 http://msdn.microsoft.com/en-us/library/ms733768.aspx ). HTTP의 경우 귀하의 삶은 IIS에서 호스팅하는 것이 더 쉬울 수 있지만 일반 서비스 호스트에서 작동합니다.

<system.serviceModel>
    <services>
        <service name="MyServiceTypes.MyService">
            <endpoint address="http://localhost:44444/MyService"
                      binding="basicHttpBinding"
                      contract="MyServiceTypes.IMyService" />

            <endpoint address="net.tcp://localhost:55555/MyService"
                      binding="netTcpBinding"
                      contract="MyServiceTypes.IMyService" />
        </service>
    </services>
</system.serviceModel>
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top