从我从客户那里获得的wsdl生成代理类时,我从svcutil收到以下警告:
Warning: Fault named "ContractException" in operation "create" cannot be imported.
Unsupported WSDL, the fault message part must reference an element. This fault message
does not reference an element. If you have edit access to the WSDL document, you can fix
the problem by referencing a schema element using the 'element' attribute.
因此,这里是wsdl中提到ContractException的部分
<schema targetNamespace="http://exceptions.webservice"
xmlns="http://www.w3.org/2001/XMLSchema" xmlns:impl="http://webservice"
xmlns:intf="http://webservice"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<import namespace="http://schemas.xmlsoap.org/soap/encoding/"/>
<complexType name="ContractException">
<sequence>
<element name="message" nillable="true" type="xsd:string"/>
</sequence>
</complexType>
<element name="ContractException" nillable="true" type="tns3:ContractException"/>
</schema>
<wsdl:message name="ContractException">
<wsdl:part name="fault" type="tns3:ContractException"/>
</wsdl:message>
<wsdl:portType name="Contract">
<wsdl:operation name="create" parameterOrder="pApiKey pContractData">
<wsdl:input message="impl:createRequest" name="createRequest"/>
<wsdl:output message="impl:createResponse" name="createResponse"/>
<wsdl:fault message="impl:ContractException" name="ContractException"/>
</wsdl:operation>
</wsdl:portType>
<wsdl:fault name="ContractException">
<wsdlsoap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
name="ContractException" use="encoded"/>
</wsdl:fault>
我在这个wsdl中找不到任何问题,但希望任何人都可以给我一个提示,我必须改变,以便我的代理生成成功。 wsdl是从网络服务器上下载的,因此我可以编辑我的本地副本(我用它来生成代理类)。
答案 0 :(得分:0)
根据显示的错误消息,故障需要包含在元素内,即 -
而不是:
<wsdl:message name="ContractException">
<wsdl:part name="fault" type="tns3:ContractException"/>
</wsdl:message>
你需要这样做:
<wsdl:message name="ContractException">
<wsdl:part name="fault" element="tns3:ContractException"/>
</wsdl:message>