Как вызвать службу wcf в пользовательском классе управления сервером? - PullRequest
0 голосов
/ 02 декабря 2011

Я занимаюсь разработкой пользовательского серверного элемента управления (например, TextBox), который поможет разработчику привязать элемент управления непосредственно к сервисному уровню.

Мои требования.

  1. Текстовое поле будет иметь такие атрибуты, как ( URL-адрес службы, метод, параметр в моей новой категории под названием Свойства службы )
  2. В URL я могу передать путь к хосту службы.

есть ли способ, которым мы можем заполнить методы, доступные в службе, в Атрибуте метода как раскрывающийся список (например, Enum) автоматически.

тогда разработчик может выбрать правильный параметр на основе выбранного метода.

Я знаю, что это очень сложно, но есть ли способ преодолеть это требование.

1 Ответ

0 голосов
/ 02 декабря 2011

Если веб-служба является службой SOAP, вы можете получить wsdl в объект XDocument или XmlDocument, а затем прочитать элементы wsdl: operation в элементе wsdl: portType, чтобы получить все доступные операции.

ПРИМЕЧАНИЕ. Это возможно, только если 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...