У меня есть рукописный 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.