2009-09-16 2 views
1

두 개의 ServiceContracts가 인터페이스로 구현되어 있습니다. 그 중 하나만 메타 데이터를 내보내려고합니다. 트릭은 두 인터페이스가 동급 클래스으로 구현된다는 것입니다. 그러므로 나는 사용할 수 있다고 생각하지 않는다. 응답 할 때 예제 구문을 포함하십시오. 감사!svcutil.exe를 사용하여 단일 계약의 메타 데이터를 내보내려면 어떻게합니까?

편집 : 동료가 최근 이것이 왜 필요한지 물었습니다. 그 이유는 첫 번째 ServiceContract가 메타 데이터를 내보내는 데 의미가없는 REST 서비스를위한 이유입니다. 그래서 두 번째 파일 이름에 "1"이 추가되기 때문에 두 개의 wsdl 및 xsd 파일이 생성되고 구분됩니다. 이로 인해 툴링이 어려워지고 출력 디렉토리에 혼란이 추가됩니다.

나는이 질문에 관심을 갖기 위해 현상금을 추가했다.

답변

2

필자가 설명한 것처럼 2 개의 인터페이스를 구현하는 서비스 계약 클래스를 만들었습니다. 일반적으로는 svcutil를 실행하는 경우

namespace NS 
{ 
    [ServiceContract] 
    public interface IREST 
    { 
     [OperationContract] 
     string WorldHello(string name); 
    } 

    [ServiceContract] 
    public interface IInterface 
    { 
     [OperationContract] 
     string HelloWorld(string name); 
    } 

    public class CI2 : IREST, IInterface 
    { 
     public string WorldHello(string name) 
     { 
      return "World Hello: " + name; 
     } 

     public string HelloWorld(string name) 
     { 
      return "Hello World: " + name; 
     } 
    } 
} 

, 내가 2 인터페이스의 방법으로 WSDL을 얻을
나는 실행하는 경우는 svcutil와/excludeType : IREST 예를 들어, 난 단지는 IInterface 방법을 얻을.

svcutil /excludeType:NS.IREST ci2service.exe 

동일한 구성을 사용하고 있습니까? 이 경우 /excludeType가 작동합니다.

+0

완벽하게 작동했습니다. * 인터페이스 *를/into/excludeTypes에 넣을 수있는 이유가 무엇인지 알지 못합니다. 도와 주셔서 감사합니다 - 포인트가 적립되었습니다! – GuyBehindtheGuy