在我们的应用程序中,我们被迫使用几个Web服务.在开始时,我们只使用“添加服务引用”菜单选项,以便创建WCF代理. 该向导不生成DataContract,而是生成XML-Serializable类.到目前为止,这么糟糕
该向导不生成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扩展元素’body’.”
原始的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(); } }
任何帮助都会很棒.
wsdl使用的模式不符合Data Contract Serializer的 Schema Reference.问题:
>“所有元素都必须符合DataContractSerializer支持的模式”.
您的模式省略了标记上的elementFormDefault属性,因此默认的“不合格”有效.您需要将以下属性名称/值对添加到< schema>元素,以便数据合同序列化程序(DCS)可以解析本地元素/类型.
将elementFormDefault = “合格”
>< sequence>上的maxOccurs和minOccurs属性tag必须为1或省略(默认为1).
因此,删除< sequence>上的maxOccurs =“unbounded”.
>在< row>上添加maxOccurs =“unbounded”标记以获取为DataSet字段生成的嵌套集合数据协定.
例如,
< xsd:element name =“DataSet”> < XSD:的complexType> < XSD:序列> < xsd:element name =“row”minOccurs =“0”maxOccurs =“unbounded”/>