2013-08-27 3 views
0

두 개의 서로 다른 호스트 (HTTPS에서는 첫 번째 액세스 가능하고 두 번째 호스트는 HTTP)에서 두 개의 WCF 웹 서비스를 사용하고 싶습니다. 둘 다 동일한 메소드를 제공하지만 첫 번째 메소드는 프로덕션 서버에 있고 두 번째 메소드는 테스트 서버에 있습니다.WCF 4.5 - 여러 웹 서비스

내 Visual Studio 2012 (express)에 참조를 추가 할 때 2 개의 네임 스페이스가 있습니다. 현재로서는 이러한 서비스를 사용하는 유일한 방법은이 네임 스페이스에서 생성 된 인터페이스와 클래스를 사용하는 것입니다. 구성 항목에 따라 하나의 웹 서비스 만 사용하여 디버그 모드인지 릴리스 모드인지 알려줍니다. 코드로 어떻게 할 수 있습니까? 클라이언트를 실행하는 동안 클라이언트와 서비스 사이의 링크가 아마 할 것을 나타냅니다

eMolTest.LotWebContractClient client = new eMolTest.LotWebContractClient(); 
client.Endpoint.Address = new System.ServiceModel.EndpointAddress("https://xxx/Services/WebService/LotWebService.svc"); 
client.Endpoint.Binding = new System.ServiceModel.WSHttpBinding(System.ServiceModel.SecurityMode.Transport); 

하지만 생성 된 예외 : I 엔드 포인트의 주소를 변경하려고

<system.serviceModel> 
    <bindings> 
     <basicHttpBinding> 
      <binding name="BasicHttpBinding_ILotWebContract"> 
       <security mode="Transport" /> 
      </binding> 
      <binding name="BasicHttpBinding_ILotWebContract1" /> 
     </basicHttpBinding> 
    </bindings> 
    <client> 
     <endpoint address="https://xxx/Services/WebService/LotWebService.svc" 
      binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_ILotWebContract" 
      contract="eMol.ILotWebContract" name="BasicHttpBinding_ILotWebContract" /> 
     <endpoint address="http://yyy/Services/WebService/LotWebService.svc" 
      binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_ILotWebContract1" 
      contract="eMolTest.ILotWebContract" name="BasicHttpBinding_ILotWebContract1" /> 
    </client> 
</system.serviceModel> 

: 여기

내 설정 파일입니다 대응하지 않습니다. ,

eMolTest.LotWebContractClient client = new eMolTest.LotWebContractClient("BasicHttpBinding_ILotWebContract"); 

그러나 다시 때문에 다른 네임 스페이스의 작동하지 않습니다 (계약의 이름이 네임 스페이스의 이름을 포함합니다 :

나는 또한 내가 프록시의 생성자를 호출 할 때 엔드 포인트의 이름을 표시하기 위해 시도 따라서 구성 파일에 정의 된대로 엔드 포인트에서 찾을 수 없습니다.

그래서, 누군가가 좋은 생각이 있다면 ...

감사합니다! 당신이 동일한 계약이 개 서비스가있는 경우 크리스

+1

Visual Studio에 기본 제공되는 자동 도구를 사용하는 대신 수동으로 프록시를 만드는 것이 가장 좋은 옵션 일 수 있습니다. –

+0

두 개의 서로 다른 위치에 배포하는 서비스가 하나 있어야합니다. 그런 다음 1 개의 서비스 참조 만 필요하고 app.config 파일을 업데이트하여 현재 수행중인 작업에 대한 올바른 정보를 가리킬 수 있습니다. –

답변

0

, 당신은 세 당사자들 사이에 계약 어셈블리 등 계약의 공유 및 프록시를 직접 만들 ChannelFactory 클래스를 사용해야합니다. 그렇게하면 같은 계약을 나타내는 두 개의 서비스 레퍼런스가 컴파일러의 관점에서 호환되지 않는다.

+0

고마워, 이걸 시도해 볼게. – user2721868