Проблема с созданием прокси-сервера WebService с использованием svcutil

StackOverflow https://stackoverflow.com/questions/906082

  •  05-09-2019
  •  | 
  •  

Вопрос

В нашем приложении мы вынуждены использовать несколько веб-сервисов.Вначале мы использовали только пункт меню «Добавить ссылку на службу», чтобы создать прокси-сервер WCF.

Мастер создал не DataContract, а скорее XML-сериализуемый класс.Пока все плохо, но это был не убийца.Однако позже мы заметили, что теряли данные, поскольку сгенерированный прокси добавлял свойство Order при атрибуции, и это вызывало проблемы.

Теперь мы пытаемся сгенерировать прокси-классы из WSDL с помощью SVCUTIL.EXE, но постоянно получаем следующее сообщение об ошибке:

    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

Сообщение об ошибке на английском языке выглядит так

«Необязательный элемент расширения WSDL 'body' из пространства имен'http://schemas.xmlsoap.org/wsdl/soap/' не было обработано».

Исходный 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, не соответствует схеме сериализатора контракта данных. Справочник по схеме.

Проблемы:

  1. «Все элементы должны быть квалифицированы для схемы, которая будет поддерживаться DataContractSerializer».

    В вашей схеме атрибут elementFormDefault в теге отсутствует, поэтому действует значение по умолчанию «неквалифицированный».Вам необходимо добавить следующую пару имя/значение атрибута в элемент <schema>, чтобы сериализатор контракта данных (DCS) мог разрешать локальные элементы/типы.

    elementFormDefault="квалифицированный"

  2. Атрибуты maxOccurs и minOccurs в теге <sequence> должны быть равны 1 или опущены (по умолчанию — 1).

    Итак, удалите maxOccurs="unbounded" в <sequence>.

  3. Добавьте maxOccurs="unbounded" в тег <row>, чтобы получить вложенный контракт данных коллекции, созданный для поля DataSet.

    Например,

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

Другие советы

Мне пришлось избавиться от использования «element» и, скорее, просто использовать «complexType».

Поэтому я удалил включающие элементы в DataContracts, а в сообщениях я установил атрибут типа вместо атрибута элемента.Теперь все работает, большое спасибо.:)

Эй, я не уверен, как вы сгенерировали свой wsdl и все такое, но наборы данных имеют несколько странностей.

При создании прокси-сервера с помощью ds мне нужно ссылаться на эту сборку:

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

Приветствия, Стайан

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top