2011-12-02 7 views
0

deveoper가 컨트롤을 직접 서비스 레이어에 바인딩하는 데 도움이되는 Custom Server Control (예 : TextBox)을 개발 중입니다.맞춤 서버 컨트롤 클래스에서 wcf 서비스를 호출하는 방법은 무엇입니까?

내 요구 사항.

  1. 텍스트 상자는
  2. URL에서 (서비스 등록라는 나의 새로운 범주에 서비스 URL, 방법, 매개 변수) 등의 특성을 갖는 것, 나는 서비스 호스트 경로를 전달할 수 있습니다.

우리는 메소드 속성의 서비스에서 사용할 수있는 메소드를 드롭 다운 (열거 형처럼)으로 자동 채울 수있는 방법이 있습니다.

개발자는 선택한 방법에 따라 올바른 매개 변수를 선택할 수 있습니다.

매우 어렵다는 것을 알고 있지만이 요구 사항을 극복 할 수있는 방법이 있습니다.

답변

0

웹 서비스가 SOAP 서비스 인 경우 wsdl을 XDocument 개체 또는 XmlDocument로 가져온 다음 wsdl : portType 요소의 wsdl : operation 요소를 읽고 사용 가능한 모든 작업을 가져올 수 있습니다.

참고 : 이는 서비스 공급자가 wsdl을 노출 한 경우에만 가능합니다. 도시 된 바와 같이 약간의 조작에

샘플 WSDL은 :

<wsdl:portType name="ISampleService"> 
    <wsdl:operation name="GetData"> 
     <wsdl:input wsaw:Action="http://tempuri.org/ISampleService/GetData" message="tns:ISampleService_GetData_InputMessage" /> 
     <wsdl:output wsaw:Action="http://tempuri.org/ISampleService/GetDataResponse" message="tns:ISampleService_GetData_OutputMessage" /> 
    </wsdl:operation> 
    <wsdl:operation name="GetEmail"> 
     <wsdl:input wsaw:Action="http://tempuri.org/ISampleService/GetEmail" message="tns:ISampleService_GetEmail_InputMessage" /> 
     <wsdl:output wsaw:Action="http://tempuri.org/ISampleService/GetEmailResponse" message="tns:ISampleService_GetEmail_OutputMessage" /> 
    </wsdl:operation> 
    <wsdl:operation name="GetPersonCount"> 
     <wsdl:input wsaw:Action="http://tempuri.org/ISampleService/GetPersonCount" message="tns:ISampleService_GetPersonCount_InputMessage" /> 
     <wsdl:output wsaw:Action="http://tempuri.org/ISampleService/GetPersonCountResponse" message="tns:ISampleService_GetPersonCount_OutputMessage" /> 
    </wsdl:operation> 
    </wsdl:portType> 

서비스로부터 상기 섹션 3 개 방법 노출 :

  • 가령 getMail에게
  • GetPersonCount
    1. 있는 GetData
    +0

    하지만 내 경우에는 wsdl이 전이 아니다. 제기했다 : ... ( – Shankar