2009-05-25 14 views
8

En nuestra aplicación, estamos obligados a consumir varios WebServices. Al principio usamos solo la opción de menú "Agregar referencia de servicio" para crear un proxy WCF.Problema con la generación del proxy de WebService usando svcutil

El asistente no generó un DataContract, sino más bien una clase XML-Serializable. Hasta ahora, muy mal, pero este no fue el asesino. Sin embargo, más tarde notamos que estábamos perdiendo datos, porque el proxy generado estaba agregando la propiedad Order al atribuir y esto causaba problemas.

Ahora estamos tratando de generar clases de proxy desde el WSDL utilizando el Svcutil.exe, pero estamos todo el tiempo recibiendo el siguiente mensaje de error:

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 

El mensaje de error en Inglés se parece a esto

"El elemento de extensión WSDL opcional 'cuerpo' del espacio de nombres 'http://schemas.xmlsoap.org/wsdl/soap/' no se manejó."

El WSDL original están presentes:

<?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> 

Y el (atornillado) clase proxy tiene el siguiente aspecto:

//------------------------------------------------------------------------------ 
// <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(); 
    } 
} 

Cualquier ayuda sería grande.

+0

¿Cuál es realmente el problema? Todo lo que veo son advertencias, en lugar de errores (y es posible que desee traducirlos para nosotros * sonrisa *) Incluso la adición de atributos de orden no debe causar datos perdidos a menos que el servicio del otro lado haga suposiciones erróneas. – blowdart

+0

Al agregar la cláusula Orden, WCF asume automáticamente que se mostrarán todos los atributos. Este no es necesariamente el caso, especialmente debido a que minoccur es 0. El problema es que esas advertencias significan que el generador omitió los tipos completamente, generando métodos vacíos ... (vacíos), que no deberían, todos tener una entrada y un tipo de salida. –

Respuesta

23

El esquema utilizado por el wsdl no se ajusta al Data Contract Serializer Schema Reference.

Problemas:

  1. "Todos los elementos deben estar calificados para un esquema que ha de apoyar DataContractSerializer".

    Su esquema omite el atributo elementFormDefault en la etiqueta por lo que el valor predeterminado, "no calificado" está en vigor. Debe agregar el siguiente par nombre/valor de atributo al elemento esquema <> para que Data Contract Serializer (DCS) pueda resolver los elementos/tipos locales.

    elementFormDefault = "calificadas"

  2. maxOcurrencias y atributos minOcurrencias en < secuencia> etiqueta debe ser 1 u omitido (por defecto es 1).

    Por lo tanto, elimine maxOccurs = "unbounded" en la secuencia <>.

  3. Agregue maxOccurs = "unbounded" en la etiqueta < fila> para obtener un contrato de datos de recopilación anidado generado para el campo DataSet.

    Por ejemplo,

    <xsd:element name="DataSet"> <xsd:complexType> <xsd:sequence> <xsd:element name="row" minOccurs="0" maxOccurs="unbounded"/>

+6

+1 para leer todo el WSDL. –

+2

Es como si el propio Sr. Svcutil Exe respondiera la pregunta. ¿Por qué no puede hablar así cuando lo uso? – x0n

0

que tenía que deshacerse de la utilización de "elemento" y mucho más bien sólo utiliza las "s" complexType.

Así que eliminé los elementos adjuntos en los DataContracts y en los Mensajes, establecí el atributo de tipo en lugar del atributo del elemento.Ahora funciona, muchas gracias. :)

0

Hola, no estoy seguro de cómo generó su wsdl y esas cosas, pero los conjuntos de datos tienen algunas rarezas.

Cuando la generación de mi proxy con un DS que necesito para hacer referencia a esta asamblea:

C: \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ System.Data.dll

Cheers, Stian

Cuestiones relacionadas