#svcutil.exe
Вопрос:
У меня возникли проблемы с компиляцией документа WSDL (не уверен, что его версия может быть 1.1/2.0) с помощью Svcutil. Это дает следующее предупреждение. Кроме того, svcutil также не может генерировать несколько интерфейсов перечисления. Возможно, это происходит из-за приведенного ниже предупреждения. Я пытался использовать svcutil2 (codeplex), но он совсем не стабилен. Мой коллега скомпилировал тот же документ WSDL с помощью инструмента Java Axis 1.2, который отлично работает. Теперь не знаю, что делать. 🙁
Предупреждение: Ошибка с именем TechnicalFault в операции bookDeal не может быть импортирована. Неподдерживаемый WSDL, для сообщений об ошибках поддерживается только одна часть сообщения. Это сообщение об ошибке ссылается на ноль или более чем на одну часть сообщения. Если у вас есть доступ к редактированию файла WSDL, вы можете устранить проблему, удалив дополнительные части сообщения, чтобы сообщение об ошибке ссылалось только на одну часть.
Предупреждение: Ошибка с именем BusinessFault в операции bookDeal не может быть импортирована. Неподдерживаемый WSDL, для сообщений об ошибках поддерживается только одна часть сообщения. Это сообщение об ошибке ссылается на ноль или более чем на одну часть сообщения. Если у вас есть доступ к редактированию файла WSDL, вы можете устранить проблему, удалив дополнительные части сообщения, чтобы сообщение о неисправности ссылалось только на одну часть.
Предупреждение: Ошибка с именем ValidationFault в операции bookDeal не может быть импортирована. Неподдерживаемый WSDL, для сообщений об ошибках поддерживается только одна часть сообщения. Это сообщение об ошибке ссылается на ноль или более чем на одну часть сообщения. Если у вас есть доступ к редактированию файла WSDL, вы можете устранить проблему, удалив дополнительные части сообщения, чтобы сообщение об ошибке ссылалось только на одну часть.
Предупреждение: Необязательный элемент расширения WSDL «заголовок» из пространства имен » http://schemas.xmlsoap.org/wsdl/soap/’ не было обработано. XPath://wsdl:definitions[@targetNamespace=’ns://abcGroup/globalMarkets/tradeExecution/fxMmDealExecutionService/v1/wsdl’]/wsdl:binding[@name=’SOAPService_Binding1′]/wsdl:operation[@name=’bookDeal’]/wsdl:fault[@name=’TechnicalFault’]
Предупреждение: Необязательный элемент расширения WSDL «заголовок» из пространства имен » http://schemas.xmlsoap.org/wsdl/soap/’ не было обработано. XPath://wsdl:definitions[@targetNamespace=’ns://abcGroup/globalMarkets/tradeExecution/fxMmDealExecutionService/v1/wsdl’]/wsdl:binding[@name=’SOAPService_Binding1′]/wsdl:operation[@name=’bookDeal’]/wsdl:fault[@name=’BusinessFault’]
Предупреждение: Необязательный элемент расширения WSDL «заголовок» из пространства имен » http://sch emas.xmlsoap.org/wsdl/soap/’ не было обработано. XPath://wsdl:definitions[@targetNamespace=’ns://abcGroup/globalMarkets/tradeExecution/fxMmDealExecutionService/v1/wsdl’]/wsdl:binding[@name=’SOAPService_Binding1′]/wsdl:operation[@name=’bookDeal’]/wsdl:fault[@name=’ValidationFault’]
Если я комментирую несколько вещей в WSDL, то svcutil компилирует документ. вы можете увидеть строку комментариев ниже.
<wsdl:message name="bookDeal">
<wsdl:part name="in" element="tns:bookDeal"/>
<wsdl:part name="oob" element="ns0:messageContext"/>
</wsdl:message>
<wsdl:message name="bookDealResponse">
<wsdl:part name="out" element="tns:bookDealResponse"/>
<wsdl:part name="oob" element="ns0:messageContext"/>
</wsdl:message>
<wsdl:message name="bookDeal_TechnicalFault">
<!--<wsdl:part name="techFault" element="ns1:technicalFault"/>-->
<wsdl:part name="oob" element="ns0:messageContext"/>
</wsdl:message>
<wsdl:message name="bookDeal_BusinessFault">
<!--<wsdl:part name="bizFault" element="ns1:businessFault"/>-->
<wsdl:part name="oob" element="ns0:messageContext"/>
</wsdl:message>
<wsdl:message name="bookDeal_ValidationFault">
<!--<wsdl:part name="vldFault" element="ns1:validationFault"/>-->
<wsdl:part name="oob" element="ns0:messageContext"/>
</wsdl:message>
<wsdl:portType name="FXMMDealExecutionServiceInterface">
<wsdl:operation name="bookDeal">
<wsdl:input message="tns:bookDeal"/>
<wsdl:output message="tns:bookDealResponse"/>
<wsdl:fault name="TechnicalFault" message="tns:bookDeal_TechnicalFault"/>
<wsdl:fault name="BusinessFault" message="tns:bookDeal_BusinessFault"/>
<wsdl:fault name="ValidationFault" message="tns:bookDeal_ValidationFault"/>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="SOAPService_Binding1" type="tns:FXMMDealExecutionServiceInterface">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="bookDeal">
<wsdl:documentation/>
<soap:operation style="document" soapAction="bookDeal"/>
<wsdl:input>
<soap:body use="literal" parts="in"/>
<soap:header use="literal" message="tns:bookDeal" part="oob"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal" parts="out"/>
<soap:header use="literal" message="tns:bookDealResponse" part="oob"/>
</wsdl:output>
<wsdl:fault name="TechnicalFault">
<soap:fault use="literal" name="TechnicalFault"/>
<!--<soap:header use="literal" message="tns:bookDeal_TechnicalFault" part="oob"/>-->
</wsdl:fault>
<wsdl:fault name="BusinessFault">
<soap:fault use="literal" name="BusinessFault"/>
<!--<soap:header use="literal" message="tns:bookDeal_BusinessFault" part="oob"/>-->
</wsdl:fault>
<wsdl:fault name="ValidationFault">
<soap:fault use="literal" name="ValidationFault"/>
<!--<soap:header use="literal" message="tns:bookDeal_ValidationFault" part="oob"/>-->
</wsdl:fault>
</wsdl:operation>
</wsdl:binding>
Пожалуйста, помогите!
Ответ №1:
Если я использовал svcutil.exe /ixt /dconly
, то я не получаю никаких предупреждений, и я вижу все классы ошибок. Но я не вижу в этом случае никакого контракта на обслуживание.
Если я удалю /dconly
его, то получу такое же предупреждение.