2009-05-25 15 views
8

Dans notre application, nous sommes obligés de consommer plusieurs WebServices. Au début, nous avons simplement utilisé l'option "Add Service Reference", afin de créer un proxy WCF.Problème lors de la génération du proxy WebService à l'aide de svcutil

L'assistant n'a pas généré de contrat de données, mais plutôt une classe XML-sérialisable. Jusqu'ici, tant pis, mais ce n'était pas le tueur. Cependant, plus tard, nous avons remarqué que nous perdions des données, car le proxy généré ajoutait la propriété Order lors de l'attribution, ce qui causait des problèmes.

Maintenant, nous essayons de générer des classes proxy à partir du WSDL à l'aide du Svcutil.exe, mais nous sommes tout le temps faire passer le message d'erreur suivant:

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 

Le message d'erreur en anglais ressemble à ceci

"L'élément facultatif d'extension WSDL 'body' de l'espace de noms 'http://schemas.xmlsoap.org/wsdl/soap/' n'a pas été traité."

Le WSDL d'origine ressemble à ceci:

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

Et le (vissé) classe proxy ressemble à ceci:

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

Toute aide serait grande.

+0

Quel est le problème? Tout ce que je vois sont des avertissements, plutôt que des erreurs (et vous pourriez vouloir les traduire * grin *) Même l'ajout d'attributs de commande ne devrait pas causer de perte de données à moins que le service de l'autre côté fasse de mauvaises suppositions. – blowdart

+0

En ajoutant la clause Order, WCF suppose automatiquement que chaque attribut sera affiché. Ce n'est pas forcément le cas, d'autant plus que le minoccur vaut 0. Le problème est que ces avertissements signifient que le générateur a complètement ignoré les types, générant des méthodes void ... (void), ce qui n'est pas le cas, tous avoir une entrée et un type de sortie. –

Répondre

23

Le schéma utilisé par le wsdl n'est pas conforme au Schema Reference du Sérialiseur de contrat de données.

Problèmes:

  1. "Tous les éléments doivent être qualifiés pour un schéma à être pris en charge par DataContractSerializer".

    Votre schéma omet l'attribut elementFormDefault sur l'étiquette de sorte que la valeur par défaut, «non qualifié», soit en vigueur. Vous devez ajouter la paire nom/valeur d'attribut suivante à l'élément schéma> < afin que le Sérialiseur de contrat de données (DCS) puisse résoudre les éléments/types locaux.

    elementFormDefault = "qualifiés"

  2. maxOccurs et attributs minOccurs sur la séquence <> doit être 1 ou omis (valeur par défaut est 1). Donc, supprimez maxOccurs = "unbounded" sur la séquence <>.

  3. Ajoutez maxOccurs = "unbounded" sur la balise row> < pour obtenir un contrat de données de collection imbriqué généré pour le champ DataSet.

    Par exemple,

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

+6

+ 1 pour lire tout le WSDL. –

+2

C'est comme si M. Svcutil Exe lui-même avait répondu à la question. Pourquoi ne peut-il pas parler comme ça quand je l'utilise? – x0n

0

Je devais me débarrasser de l'utilisation de l « élément » et bien plutôt juste utilisé les « complexType ». Par conséquent, j'ai supprimé les éléments englobants sur les DataContracts et dans les messages, j'ai défini l'attribut type à la place de l'attribut element.Maintenant ça marche, merci beaucoup. :)

0

Hey je ne suis pas sûr de la façon dont vous avez généré votre wsdl et d'autres choses, mais les jeux de données ont quelques bizarreries.

Lors de la génération de mon proxy avec ds que je dois faire référence à cette assemblée:

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

Cheers, Stian