2011-12-02 90 views
0

我正在開發一個自定義服務器控件(例如:一個文本框),它可以幫助開發人員將控件直接綁定到服務層。如何在自定義服務器控件類中調用wcf服務?

我的要求。

  1. 文本框會(下稱爲服務屬性我的新類別服務URL,方法,參數
  2. 在URL像屬性,我可以通過服務主機路徑。

有沒有什麼辦法可以在方法屬性中將服務中可用的方法自動填充爲下拉列表(如Enum)。

然後開發人員可以根據所選方法選擇正確的參數。

我知道這很難,但有什麼辦法可以克服這個要求。

回答

0

如果Web服務是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種方法:

  1. 的GetData
  2. GetEmail
  3. GetPersonCount
+0

但在我的情況下,wsdl不是前構成...... :( – Shankar