Отправка произвольного XML через прокси-классы WCF, сгенерированные из WSDL - PullRequest
1 голос
/ 22 июня 2011

У меня есть рукописный WSDL, а также несколько XSD-файлов.Клиенту .NET необходимо загрузить XML-документ с диска и отправить его содержимое как часть сообщения SOAP.Из того, что я читал, я думаю, что мне нужно повлиять на svcutil.exe или wsdl.exe, чтобы рассматривать эту часть сообщения SOAP как XmlElement, а не пытаться создавать типы для него.

Является ли правильнымспособ сделать это, чтобы указать часть сообщения как <xs:any> в схеме?

Есть ли другой способ, который позволил бы мне правильно указать сообщение в схеме без использования <xs:any>?

У меня есть контроль над WSDL и реализацией службы Java, и немного меньше контроля над клиентом WCF.

Вот пример сообщения из WSDL:

<wsdl:message name="TransmitFoo">
  <wsdl:part name="body" element="someprefix:TransmitFooRequest"/>
</wsdl:message>
<wsdl:portType...>
  <wsdl:operation name="TransmitFoo">
    <wsdl:input message="tns:TransmitFoo">
  </wsdl:operation>
</wsdl:portType>

ОпределениеTransmitFooRequest из схемы выглядит следующим образом:

<xs:element name="TransmitFooRequest">
  <xs:complexType>
    <xs:all>
      <xs:element name="someValue" type="xs:string"/>
      <xs:element ref="someprefix:bar" />
    </xs:all>
  </xs:complexType>
</xs:element>

<someprefix:bar> определяется в схеме.Это часть, которая загружается с диска.Я хотел бы, чтобы сгенерированный прокси-класс WCF имел вид сигнатуры метода, подобный следующему:

TransmitFoo(String someValue, XmlElement bar)

Я видел ответ на аналогичное требование, когда WSDL генерируется с сервера WCF;Я делаю наоборот, генерируя клиентские заглушки WCF из WSDL.

Я понимаю,клиент мог бы также создать SOAP-сообщение и заголовки полностью вручную, как в другом ответе, но я бы хотел избежать повторной реализации SOAP.

...