在我们的应用程序中,我们被迫使用多个Web服务。在开始时,我们只使用“添加服务引用”菜单选项,以创建WCF代理。
该向导不生成DataContract,而是生成XML-Serializable类。到目前为止,这么糟糕,但这不是杀手。但是,后来我们注意到,我们丢失了数据,因为生成的代理在归因时添加了Order属性,这导致了问题。
现在我们尝试使用SVCUTIL.EXE从WSDL生成代理类,但我们总是收到以下错误消息:
C:\temp\WSDL>svcutil /serializer:DataContractSerializer ReadSddsAddressOut.wsdl
Microsoft (R) Service Model Metadata Tool
[Microsoft (R) Windows (R) Communication Foundation, Version 3.0.4506.2152]
Copyright (c) Microsoft Corporation. All rights reserved.
Warning: Das optionale WSDL-Erweiterungselement "body" aus Namespace "http://schemas.xmlsoap.org/wsdl/soap/" wurde nicht behandelt.
XPath: //wsdl:definitions[@targetNamespace='http://post.ch/sdds/address']/wsdl:binding[@name='ReadSddsAddressOutBinding']/wsdl:operation[@name='GeoSuchKanton']/wsdl:input
Warning: Das optionale WSDL-Erweiterungselement "body" aus Namespace "http://schemas.xmlsoap.org/wsdl/soap/" wurde nicht behandelt.
XPath: //wsdl:definitions[@targetNamespace='http://post.ch/sdds/address']/wsdl:binding[@name='ReadSddsAddressOutBinding']/wsdl:operation[@name='GeoSuchKanton']/wsdl:output
Warning: Das optionale WSDL-Erweiterungselement "body" aus Namespace "http://schemas.xmlsoap.org/wsdl/soap/" wurde nicht behandelt.
XPath: //wsdl:definitions[@targetNamespace='http://post.ch/sdds/address']/wsdl:binding[@name='ReadSddsAddressOutBinding']/wsdl:operation[@name='GeoSuchPlz']/wsdl:input
Warning: Das optionale WSDL-Erweiterungselement "body" aus Namespace "http://schemas.xmlsoap.org/wsdl/soap/" wurde nicht behandelt.
XPath: //wsdl:definitions[@targetNamespace='http://post.ch/sdds/address']/wsdl:binding[@name='ReadSddsAddressOutBinding']/wsdl:operation[@name='GeoSuchPlz']/wsdl:output
Warning: Das optionale WSDL-Erweiterungselement "body" aus Namespace "http://schemas.xmlsoap.org/wsdl/soap/" wurde nicht behandelt.
XPath: //wsdl:definitions[@targetNamespace='http://post.ch/sdds/address']/wsdl:binding[@name='ReadSddsAddressOutBinding']/wsdl:operation[@name='GeoSuchNation']/wsdl:input
Warning: Das optionale WSDL-Erweiterungselement "body" aus Namespace "http://schemas.xmlsoap.org/wsdl/soap/" wurde nicht behandelt.
XPath: //wsdl:definitions[@targetNamespace='http://post.ch/sdds/address']/wsdl:binding[@name='ReadSddsAddressOutBinding']/wsdl:operation[@name='GeoSuchNation']/wsdl:output
Warning: Das optionale WSDL-Erweiterungselement "body" aus Namespace "http://schemas.xmlsoap.org/wsdl/soap/" wurde nicht behandelt.
XPath: //wsdl:definitions[@targetNamespace='http://post.ch/sdds/address']/wsdl:binding[@name='ReadSddsAddressOutBinding']/wsdl:operation[@name='GeoSuchAdr']/wsdl:input
Warning: Das optionale WSDL-Erweiterungselement "body" aus Namespace "http://schemas.xmlsoap.org/wsdl/soap/" wurde nicht behandelt.
XPath: //wsdl:definitions[@targetNamespace='http://post.ch/sdds/address']/wsdl:binding[@name='ReadSddsAddressOutBinding']/wsdl:operation[@name='GeoSuchAdr']/wsdl:output
Warning: Das optionale WSDL-Erweiterungselement "body" aus Namespace "http://schemas.xmlsoap.org/wsdl/soap/" wurde nicht behandelt.
XPath: //wsdl:definitions[@targetNamespace='http://post.ch/sdds/address']/wsdl:binding[@name='ReadSddsAddressOutBinding']/wsdl:operation[@name='GeoSuchPkt']/wsdl:input
Warning: Das optionale WSDL-Erweiterungselement "body" aus Namespace "http://schemas.xmlsoap.org/wsdl/soap/" wurde nicht behandelt.
XPath: //wsdl:definitions[@targetNamespace='http://post.ch/sdds/address']/wsdl:binding[@name='ReadSddsAddressOutBinding']/wsdl:operation[@name='GeoSuchPkt']/wsdl:output
Generating files...
C:\temp\WSDL\ReadSddsAddressOut.cs
C:\temp\WSDL\output.config
英文错误信息如下所示
“未处理名称空间”http://schemas.xmlsoap.org/wsdl/soap/“中的可选WSDL扩展元素”正文“。”
原始WSDL如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions name="ReadSddsAddressOut" targetNamespace="http://post.ch/sdds/address" xmlns:p2="http://post.ch/sdds" xmlns:p1="http://post.ch/sdds/address" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
<wsdl:documentation/>
<wsdl:types>
<xsd:schema targetNamespace="http://post.ch/sdds" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://post.ch/sdds">
<xsd:element name="ZuboGeoKantonReq">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="GEOKTNID" type="xsd:string" minOccurs="0"/>
<xsd:element name="GEOKTNBEZ" type="xsd:string" minOccurs="0"/>
<xsd:element name="maxRows" type="xsd:integer" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="ZuboGeoPktReq">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="GEOPKTID" type="xsd:integer" minOccurs="0"/>
<xsd:element name="GEOADRID" type="xsd:integer" minOccurs="0"/>
<xsd:element name="GEOKTNID" type="xsd:string" minOccurs="0"/>
<xsd:element name="GEOKTNBEZ" type="xsd:string" minOccurs="0"/>
<xsd:element name="GEOPLZPLZ" type="xsd:string" minOccurs="0"/>
<xsd:element name="GEOPLZPLZ4" type="xsd:string" minOccurs="0"/>
<xsd:element name="GEOPLZORT39" type="xsd:string" minOccurs="0"/>
<xsd:element name="GEOSTRBEZ" type="xsd:string" minOccurs="0"/>
<xsd:element name="GEOADRSTRNRT" type="xsd:string" minOccurs="0"/>
<xsd:element name="GEOADRCMT" type="xsd:string" minOccurs="0"/>
<xsd:element name="GEOPKTKORX" type="xsd:decimal" minOccurs="0"/>
<xsd:element name="GEOPKTKORY" type="xsd:decimal" minOccurs="0"/>
<xsd:element name="GEOPKTKORZ" type="xsd:decimal" minOccurs="0"/>
<xsd:element name="GEOPKTTYP" type="xsd:integer" minOccurs="0"/>
<xsd:element name="GEOPKTMAIN" type="xsd:boolean" minOccurs="0"/>
<xsd:element name="withDeletedPkt" type="xsd:boolean" minOccurs="0"/>
<xsd:element name="maxRows" type="xsd:integer" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="ZuboGeoNationResp">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="ErrorCode" type="xsd:integer"/>
<xsd:element name="ErrorText" type="xsd:string" minOccurs="0"/>
<xsd:element name="DataSet">
<xsd:complexType>
<xsd:sequence maxOccurs="unbounded">
<xsd:element name="row" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="GEONATID" type="xsd:string"/>
<xsd:element name="GEONATBEZ" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="ZuboGeoKantonResp">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="ErrorCode" type="xsd:integer"/>
<xsd:element name="ErrorText" type="xsd:string" minOccurs="0"/>
<xsd:element name="DataSet">
<xsd:complexType>
<xsd:sequence maxOccurs="unbounded">
<xsd:element name="row" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="GEOKTNID" type="xsd:string"/>
<xsd:element name="GEOKTNBEZ" type="xsd:string"/>
<xsd:element name="GEONATID" type="xsd:string"/>
<xsd:element name="GEONATBEZ" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="ZuboGeoPlzResp">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="ErrorCode" type="xsd:integer"/>
<xsd:element name="ErrorText" type="xsd:string" minOccurs="0"/>
<xsd:element name="DataSet">
<xsd:complexType>
<xsd:sequence maxOccurs="unbounded">
<xsd:element name="row" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="GEOPLZPLZ" type="xsd:string"/>
<xsd:element name="GEOPLZPLZ4" type="xsd:string"/>
<xsd:element name="GEOPLZONRP" type="xsd:integer"/>
<xsd:element name="GEOPLZSPRCOD1" type="xsd:integer"/>
<xsd:element name="GEOPLZSPRCOD2" type="xsd:integer" minOccurs="0"/>
<xsd:element name="GEOPLZORT18" type="xsd:string"/>
<xsd:element name="GEOPLZORT27" type="xsd:string"/>
<xsd:element name="GEOPLZORT39" type="xsd:string"/>
<xsd:element name="GEOPLZPLZTYP" type="xsd:integer"/>
<xsd:element name="GEOKTNID" type="xsd:string" minOccurs="0"/>
<xsd:element name="GEOKTNBEZ" type="xsd:string" minOccurs="0"/>
<xsd:element name="GEONATID" type="xsd:string"/>
<xsd:element name="GEONATBEZ" type="xsd:string"/>
<xsd:element name="GEOPLZSTATUS" type="xsd:integer"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="ZuboGeoPktResp">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="ErrorCode" type="xsd:integer"/>
<xsd:element name="ErrorText" type="xsd:string" minOccurs="0"/>
<xsd:element name="DataSet">
<xsd:complexType>
<xsd:sequence maxOccurs="unbounded">
<xsd:element name="row" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="GEOPKTID" type="xsd:integer"/>
<xsd:element name="GEOPKTBEZ" type="xsd:string" minOccurs="0"/>
<xsd:element name="GEOPKTKORX" type="xsd:decimal"/>
<xsd:element name="GEOPKTKORY" type="xsd:decimal"/>
<xsd:element name="GEOPKTKORZ" type="xsd:decimal" minOccurs="0"/>
<xsd:element name="GEOPKTSTK" type="xsd:integer" minOccurs="0"/>
<xsd:element name="GEOPKTWOH" type="xsd:integer" minOccurs="0"/>
<xsd:element name="GEOPKTTYP" type="xsd:integer" minOccurs="0"/>
<xsd:element name="GEOPKTMAIN" type="xsd:boolean"/>
<xsd:element name="GEOADRID" type="xsd:integer" minOccurs="0"/>
<xsd:element name="GEOSTRBEZ" type="xsd:string" minOccurs="0"/>
<xsd:element name="GEOSTRTYP" type="xsd:integer" minOccurs="0"/>
<xsd:element name="GEOADRSTRNR" type="xsd:integer" minOccurs="0"/>
<xsd:element name="GEOADRSTRNRZ" type="xsd:string" minOccurs="0"/>
<xsd:element name="GEOADRSTRNRT" type="xsd:string" minOccurs="0"/>
<xsd:element name="GEOADRHAUSN" type="xsd:string" minOccurs="0"/>
<xsd:element name="GEOADRGEBFLG" type="xsd:boolean" minOccurs="0"/>
<xsd:element name="GEOADRLAGFLG" type="xsd:boolean" minOccurs="0"/>
<xsd:element name="GEOADRCMT" type="xsd:string" minOccurs="0"/>
<xsd:element name="GEOADRHAUSKEY" type="xsd:integer" minOccurs="0"/>
<xsd:element name="GEOADRGPOID" type="xsd:integer" minOccurs="0"/>
<xsd:element name="GEOPLZPLZ" type="xsd:string" minOccurs="0"/>
<xsd:element name="GEOPLZPLZ4" type="xsd:string" minOccurs="0"/>
<xsd:element name="GEOPLZONRP" type="xsd:integer" minOccurs="0"/>
<xsd:element name="GEOPLZSPRCOD1" type="xsd:integer" minOccurs="0"/>
<xsd:element name="GEOPLZSPRCOD2" type="xsd:integer" minOccurs="0"/>
<xsd:element name="GEOPLZORT18" type="xsd:string" minOccurs="0"/>
<xsd:element name="GEOPLZORT27" type="xsd:string" minOccurs="0"/>
<xsd:element name="GEOPLZORT39" type="xsd:string" minOccurs="0"/>
<xsd:element name="GEOPLZPLZTYP" type="xsd:integer" minOccurs="0"/>
<xsd:element name="GEOKTNID" type="xsd:string" minOccurs="0"/>
<xsd:element name="GEOKTNBEZ" type="xsd:string" minOccurs="0"/>
<xsd:element name="GEONATID" type="xsd:string" minOccurs="0"/>
<xsd:element name="GEONATBEZ" type="xsd:string" minOccurs="0"/>
<xsd:element name="GEOPKTSTATUS" type="xsd:integer"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="ZuboGeoPlzReq">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="GEOPLZPLZ" type="xsd:string" minOccurs="0"/>
<xsd:element name="GEOPLZPLZ4" type="xsd:string" minOccurs="0"/>
<xsd:element name="GEOPLZORT39" type="xsd:string" minOccurs="0"/>
<xsd:element name="maxRows" type="xsd:integer" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="ZuboGeoNationReq">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="GEONATID" type="xsd:string" minOccurs="0"/>
<xsd:element name="GEONATBEZ" type="xsd:string" minOccurs="0"/>
<xsd:element name="maxRows" type="xsd:integer" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="ZuboGeoAdrResp">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="ErrorCode" type="xsd:integer"/>
<xsd:element name="ErrorText" type="xsd:string" minOccurs="0"/>
<xsd:element name="DataSet">
<xsd:complexType>
<xsd:sequence maxOccurs="unbounded">
<xsd:element name="row" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="GEOADRID" type="xsd:integer"/>
<xsd:element name="GEOSTRBEZ" type="xsd:string" minOccurs="0"/>
<xsd:element name="GEOSTRTYP" type="xsd:integer" minOccurs="0"/>
<xsd:element name="GEOADRSTRNR" type="xsd:integer" minOccurs="0"/>
<xsd:element name="GEOADRSTRNRZ" type="xsd:string" minOccurs="0"/>
<xsd:element name="GEOADRSTRNRT" type="xsd:string" minOccurs="0"/>
<xsd:element name="GEOADRSTRHAUSN" type="xsd:string" minOccurs="0"/>
<xsd:element name="GEOADRGEBFLG" type="xsd:boolean" minOccurs="0"/>
<xsd:element name="GEOADRLAGFLG" type="xsd:boolean" minOccurs="0"/>
<xsd:element name="GEOADRCMT" type="xsd:string" minOccurs="0"/>
<xsd:element name="GEOADRHAUSKEY" type="xsd:integer"/>
<xsd:element name="GEOADRGPOID" type="xsd:integer" minOccurs="0"/>
<xsd:element name="GEOPLZPLZ" type="xsd:string" minOccurs="0"/>
<xsd:element name="GEOPLZPLZ4" type="xsd:string" minOccurs="0"/>
<xsd:element name="GEOPLZONRP" type="xsd:integer" minOccurs="0"/>
<xsd:element name="GEOPLZSPRCOD1" type="xsd:integer" minOccurs="0"/>
<xsd:element name="GEOPLZSPRCOD2" type="xsd:integer" minOccurs="0"/>
<xsd:element name="GEOPLZORT18" type="xsd:string" minOccurs="0"/>
<xsd:element name="GEOPLZORT27" type="xsd:string" minOccurs="0"/>
<xsd:element name="GEOPLZORT39" type="xsd:string" minOccurs="0"/>
<xsd:element name="GEOPLZPLZTYP" type="xsd:integer" minOccurs="0"/>
<xsd:element name="GEOKTNID" type="xsd:string" minOccurs="0"/>
<xsd:element name="GEOKTNBEZ" type="xsd:string" minOccurs="0"/>
<xsd:element name="GEONATID" type="xsd:string" minOccurs="0"/>
<xsd:element name="GEONATBEZ" type="xsd:string" minOccurs="0"/>
<xsd:element name="GEOADRSTATUS" type="xsd:integer"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="ZuboGeoAdrReq">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="GEOADRID" type="xsd:integer" minOccurs="0"/>
<xsd:element name="GEOKTNID" type="xsd:string" minOccurs="0"/>
<xsd:element name="GEOKTNBEZ" type="xsd:string" minOccurs="0"/>
<xsd:element name="GEOPLZPLZ" type="xsd:string" minOccurs="0"/>
<xsd:element name="GEOPLZPLZ4" type="xsd:string" minOccurs="0"/>
<xsd:element name="GEOPLZORT39" type="xsd:string" minOccurs="0"/>
<xsd:element name="GEOSTRBEZ" type="xsd:string" minOccurs="0"/>
<xsd:element name="GEOADRSTRNRT" type="xsd:string" minOccurs="0"/>
<xsd:element name="GEOADRCMT" type="xsd:string" minOccurs="0"/>
<xsd:element name="withDeletedAdr" type="xsd:boolean" minOccurs="0"/>
<xsd:element name="maxRows" type="xsd:integer" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
</wsdl:types>
<wsdl:message name="p2.ZuboGeoKantonReq">
<wsdl:documentation/>
<wsdl:part name="ZuboGeoKantonReq" element="p2:ZuboGeoKantonReq"/>
</wsdl:message>
<wsdl:message name="p2.ZuboGeoKantonResp">
<wsdl:documentation/>
<wsdl:part name="ZuboGeoKantonResp" element="p2:ZuboGeoKantonResp"/>
</wsdl:message>
<wsdl:message name="p2.ZuboGeoPlzReq">
<wsdl:documentation/>
<wsdl:part name="ZuboGeoPlzReq" element="p2:ZuboGeoPlzReq"/>
</wsdl:message>
<wsdl:message name="p2.ZuboGeoPlzResp">
<wsdl:documentation/>
<wsdl:part name="ZuboGeoPlzResp" element="p2:ZuboGeoPlzResp"/>
</wsdl:message>
<wsdl:message name="p2.ZuboGeoNationReq">
<wsdl:documentation/>
<wsdl:part name="ZuboGeoNationReq" element="p2:ZuboGeoNationReq"/>
</wsdl:message>
<wsdl:message name="p2.ZuboGeoNationResp">
<wsdl:documentation/>
<wsdl:part name="ZuboGeoNationResp" element="p2:ZuboGeoNationResp"/>
</wsdl:message>
<wsdl:message name="p2.ZuboGeoAdrReq">
<wsdl:documentation/>
<wsdl:part name="ZuboGeoAdrReq" element="p2:ZuboGeoAdrReq"/>
</wsdl:message>
<wsdl:message name="p2.ZuboGeoAdrResp">
<wsdl:documentation/>
<wsdl:part name="ZuboGeoAdrResp" element="p2:ZuboGeoAdrResp"/>
</wsdl:message>
<wsdl:message name="p2.ZuboGeoPktReq">
<wsdl:documentation/>
<wsdl:part name="ZuboGeoPktReq" element="p2:ZuboGeoPktReq"/>
</wsdl:message>
<wsdl:message name="p2.ZuboGeoPktResp">
<wsdl:documentation/>
<wsdl:part name="ZuboGeoPktResp" element="p2:ZuboGeoPktResp"/>
</wsdl:message>
<wsdl:portType name="ReadSddsAddressOut">
<wsdl:documentation/>
<wsdl:operation name="GeoSuchKanton">
<wsdl:documentation/>
<wsdl:input message="p1:p2.ZuboGeoKantonReq"/>
<wsdl:output message="p1:p2.ZuboGeoKantonResp"/>
</wsdl:operation>
<wsdl:operation name="GeoSuchPlz">
<wsdl:documentation/>
<wsdl:input message="p1:p2.ZuboGeoPlzReq"/>
<wsdl:output message="p1:p2.ZuboGeoPlzResp"/>
</wsdl:operation>
<wsdl:operation name="GeoSuchNation">
<wsdl:documentation/>
<wsdl:input message="p1:p2.ZuboGeoNationReq"/>
<wsdl:output message="p1:p2.ZuboGeoNationResp"/>
</wsdl:operation>
<wsdl:operation name="GeoSuchAdr">
<wsdl:documentation/>
<wsdl:input message="p1:p2.ZuboGeoAdrReq"/>
<wsdl:output message="p1:p2.ZuboGeoAdrResp"/>
</wsdl:operation>
<wsdl:operation name="GeoSuchPkt">
<wsdl:documentation/>
<wsdl:input message="p1:p2.ZuboGeoPktReq"/>
<wsdl:output message="p1:p2.ZuboGeoPktResp"/>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="ReadSddsAddressOutBinding" type="p1:ReadSddsAddressOut">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"/>
<wsdl:operation name="GeoSuchKanton">
<soap:operation soapAction="http://sap.com/xi/WebService/soap1.1" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"/>
<wsdl:input>
<soap:body use="literal" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="GeoSuchPlz">
<soap:operation soapAction="http://sap.com/xi/WebService/soap1.1" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"/>
<wsdl:input>
<soap:body use="literal" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="GeoSuchNation">
<soap:operation soapAction="http://sap.com/xi/WebService/soap1.1" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"/>
<wsdl:input>
<soap:body use="literal" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="GeoSuchAdr">
<soap:operation soapAction="http://sap.com/xi/WebService/soap1.1" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"/>
<wsdl:input>
<soap:body use="literal" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="GeoSuchPkt">
<soap:operation soapAction="http://sap.com/xi/WebService/soap1.1" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"/>
<wsdl:input>
<soap:body use="literal" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="ReadSddsAddressOutService">
<wsdl:port name="ReadSddsAddressOutPort" binding="p1:ReadSddsAddressOutBinding">
<soap:address location="http://h03kyq:51000/XISOAPAdapter/MessageServlet?channel=:SDDS_DEV:ssReadSddsAddress" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
(拧紧的)代理类看起来像这样:
//------------------------------------------------------------------------------
// <auto-generated>
// Dieser Code wurde von einem Tool generiert.
// Laufzeitversion:2.0.50727.3074
//
// Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
// der Code erneut generiert wird.
// </auto-generated>
//------------------------------------------------------------------------------
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "3.0.0.0")]
[System.ServiceModel.ServiceContractAttribute(Namespace="http://post.ch/sdds/address", ConfigurationName="ReadSddsAddressOut")]
public interface ReadSddsAddressOut
{
[System.ServiceModel.OperationContractAttribute()]
void GeoSuchKanton();
[System.ServiceModel.OperationContractAttribute()]
void GeoSuchPlz();
[System.ServiceModel.OperationContractAttribute()]
void GeoSuchNation();
[System.ServiceModel.OperationContractAttribute()]
void GeoSuchAdr();
[System.ServiceModel.OperationContractAttribute()]
void GeoSuchPkt();
}
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "3.0.0.0")]
public interface ReadSddsAddressOutChannel : ReadSddsAddressOut, System.ServiceModel.IClientChannel
{
}
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "3.0.0.0")]
public partial class ReadSddsAddressOutClient : System.ServiceModel.ClientBase<ReadSddsAddressOut>, ReadSddsAddressOut
{
public ReadSddsAddressOutClient()
{
}
public ReadSddsAddressOutClient(string endpointConfigurationName) :
base(endpointConfigurationName)
{
}
public ReadSddsAddressOutClient(string endpointConfigurationName, string remoteAddress) :
base(endpointConfigurationName, remoteAddress)
{
}
public ReadSddsAddressOutClient(string endpointConfigurationName, System.ServiceModel.EndpointAddress remoteAddress) :
base(endpointConfigurationName, remoteAddress)
{
}
public ReadSddsAddressOutClient(System.ServiceModel.Channels.Binding binding, System.ServiceModel.EndpointAddress remoteAddress) :
base(binding, remoteAddress)
{
}
public void GeoSuchKanton()
{
base.Channel.GeoSuchKanton();
}
public void GeoSuchPlz()
{
base.Channel.GeoSuchPlz();
}
public void GeoSuchNation()
{
base.Channel.GeoSuchNation();
}
public void GeoSuchAdr()
{
base.Channel.GeoSuchAdr();
}
public void GeoSuchPkt()
{
base.Channel.GeoSuchPkt();
}
}
任何帮助都会很棒。
答案 0 :(得分:24)
wsdl使用的架构不符合Data Contract Serializer的Schema Reference。
问题:
“所有元素都必须符合DataContractSerializer支持的架构”。
您的架构忽略了标签上的elementFormDefault属性,因此默认的“不合格”有效。您需要将以下属性名称/值对添加到&lt; schema&gt;元素,以便数据合同序列化程序(DCS)可以解析本地元素/类型。
<强>将elementFormDefault = “合格”强>
&lt; sequence&gt;上的maxOccurs和minOccurs属性tag必须为1或省略(默认为1)。
因此,删除&lt; sequence&gt;上的maxOccurs =“unbounded”。
在&lt; row&gt;上添加maxOccurs =“unbounded”标记以获取为DataSet字段生成的嵌套集合数据协定。
例如,
<xsd:element name="DataSet">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="row" minOccurs="0" maxOccurs="unbounded"/>
答案 1 :(得分:0)
我不得不摆脱“元素”的使用,而只是使用了“complexType”。
所以我删除了DataContracts和Messages中的封闭元素,我设置了type属性而不是element属性。现在它起作用了,非常感谢你。 :)
答案 2 :(得分:0)
嘿我不确定你是如何生成你的wsdl和东西的,但是数据集有一些奇怪之处。
使用ds生成代理时我需要引用此程序集:
C:\ Windows \ Microsoft.NET \框架\ V2.0.50727 \ System.Data.dll中
干杯, 了Stian