簡體   English   中英

WCF SOAP服務:復雜類型屬性為空

[英]WCF SOAP Service: Complex Type Properties are null

我一直在嘗試使用我提供了一段時間的WSDL來設置WCF WebService,並且我感到非常沮喪,因為它無法正常工作。 我正在構建的服務應該充當某種中間件,從客戶端接收SOAP消息(使用SAP WSI / PI)並將消息內容推送到我們的CMS中。 它似乎有點工作,但它無法獲得復雜類型的值。

我會盡量做到盡可能完整,但由於我是一個非常溫和的程序員,我可能會錯過有價值的信息或使用錯誤的條款。 如果您遺失了一些幫助,請告訴我。 我正在從我正在共享的模式中刪除名稱空間,試圖隱藏我正在設置服務的客戶。

我收到了客戶的4個文件,我嘗試用它來構建我的WebService。

  • 1 x Service.wsdl
  • 1 x Serivce.xsd
  • 2 x ExportXMLSchema.xsd

由於我唯一關注的問題是ExportXMLSchema.xsd中定義的復雜類型,我將分享這些內容。

ExportXMLSchema1.xsd:

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema targetNamespace="http://company.org/mail/hrm/JobPublication" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://company.org/mail/hrm/JobPublication" xmlns:p7="http://company.org/mail/global/datatypes">
    <xsd:import namespace="http://company.org/mail/global/datatypes" schemaLocation="file:///localfile/ExportXMLSchema2.xsd"/>
    <xsd:attributeGroup name="JobPositionPublication_Enhncmnt"/>
    <xsd:group name="JobPositionPublication_Enhncmnt">
        <xsd:sequence>
            <xsd:element name="ObjectSearchID" type="p7:JobPositionPostingID" minOccurs="0" form="qualified">
                <xsd:annotation>
                    <xsd:appinfo source="http://sap.com/xi/TextID">767caf30a94311dfc60c00248143fb3c</xsd:appinfo>
                    <xsd:documentation/>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="PositionPlaceID" type="p7:JobPositionPostingID" minOccurs="0" form="qualified">
                <xsd:annotation>
                    <xsd:appinfo source="http://sap.com/xi/TextID">767caf31a94311dfc92300248143fb3c</xsd:appinfo>
                    <xsd:documentation>Formatieplaats ID</xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="PositionPlaceDescription" type="p7:DescriptionHR" minOccurs="0" form="qualified">
                <xsd:annotation>
                    <xsd:appinfo source="http://sap.com/xi/TextID">767caf32a94311df9bfa00248143fb3c</xsd:appinfo>
                    <xsd:documentation>Formatieplaats omschrijving</xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="City" type="p7:City" minOccurs="0" form="qualified">
                <xsd:annotation>
                    <xsd:appinfo source="http://sap.com/xi/TextID">767caf33a94311df9f3900248143fb3c</xsd:appinfo>
                    <xsd:documentation/>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="PostalCodeFrom" type="p7:PostalCode" minOccurs="0" form="qualified">
                <xsd:annotation>
                    <xsd:appinfo source="http://sap.com/xi/TextID">767caf34a94311dfa86b00248143fb3c</xsd:appinfo>
                    <xsd:documentation/>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="PostalCodeTo" type="p7:PostalCode" minOccurs="0" form="qualified">
                <xsd:annotation>
                    <xsd:appinfo source="http://sap.com/xi/TextID">767caf35a94311dfb7f900248143fb3c</xsd:appinfo>
                    <xsd:documentation/>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="AreaDescription" type="p7:DescriptionHR" minOccurs="0" form="qualified">
                <xsd:annotation>
                    <xsd:appinfo source="http://sap.com/xi/TextID">89c7af94b14111e19869984be172d7ee</xsd:appinfo>
                    <xsd:documentation/>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="TemporaryWorkerType" type="p7:TemporaryWorkerType" minOccurs="0" form="qualified">
                <xsd:annotation>
                    <xsd:appinfo source="http://sap.com/xi/TextID">767caf37a94311dfa43d00248143fb3c</xsd:appinfo>
                    <xsd:documentation>THK</xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="PublicationFunctionID" type="p7:PublicationFunctionID" minOccurs="0" form="qualified">
                <xsd:annotation>
                    <xsd:appinfo source="http://sap.com/xi/TextID">ca6011b0a94711dfbc1200248143fb3c</xsd:appinfo>
                    <xsd:documentation/>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="JobTitle" type="p7:DescriptionHR" minOccurs="0" form="qualified">
                <xsd:annotation>
                    <xsd:appinfo source="http://sap.com/xi/TextID">c0807df0a94811dfc40e00248143fb3c</xsd:appinfo>
                    <xsd:documentation/>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="JobID" type="p7:JobPositionPostingID" minOccurs="0" form="qualified">
                <xsd:annotation>
                    <xsd:appinfo source="http://sap.com/xi/TextID">c0807df1a94811df8d5000248143fb3c</xsd:appinfo>
                    <xsd:documentation/>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="Availability" minOccurs="0" maxOccurs="unbounded" form="qualified">
                <xsd:annotation>
                    <xsd:appinfo source="http://sap.com/xi/TextID">d48077a0a94911dfa0bc00248143fb3c</xsd:appinfo>
                    <xsd:documentation/>
                </xsd:annotation>
                <xsd:complexType>
                    <xsd:sequence>
                        <xsd:element name="DayOfWeek" type="p7:DayOfWeek">
                            <xsd:annotation>
                                <xsd:appinfo source="http://sap.com/xi/TextID">e9bfdac0bc0411df9b5e18a9058b3aa3</xsd:appinfo>
                                <xsd:documentation/>
                            </xsd:annotation>
                        </xsd:element>
                        <xsd:element name="DayPart" type="p7:DayPart">
                            <xsd:annotation>
                                <xsd:appinfo source="http://sap.com/xi/TextID">e9bfdac1bc0411dfbee818a9058b3aa3</xsd:appinfo>
                                <xsd:documentation/>
                            </xsd:annotation>
                        </xsd:element>
                    </xsd:sequence>
                </xsd:complexType>
            </xsd:element>
            <xsd:element name="TeamID" type="p7:TeamID" minOccurs="0" form="qualified">
                <xsd:annotation>
                    <xsd:appinfo source="http://sap.com/xi/TextID">7a21a398b3c311e1c9ba78e3b50a88fe</xsd:appinfo>
                    <xsd:documentation/>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="TeamIDDescription" type="p7:DescriptionHR" minOccurs="0" form="qualified">
                <xsd:annotation>
                    <xsd:appinfo source="http://sap.com/xi/TextID">7a21a399b3c311e1a1f678e3b50a88fe</xsd:appinfo>
                    <xsd:documentation/>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="AreaID" type="p7:AreaID" minOccurs="0" form="qualified">
                <xsd:annotation>
                    <xsd:appinfo source="http://sap.com/xi/TextID">7a21a39ab3c311e1bf1478e3b50a88fe</xsd:appinfo>
                    <xsd:documentation/>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="AreaIDDescription" type="p7:DescriptionHR" minOccurs="0" form="qualified">
                <xsd:annotation>
                    <xsd:appinfo source="http://sap.com/xi/TextID">4f871a83b3c911e1b30c78e3b50a88fe</xsd:appinfo>
                    <xsd:documentation/>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="Address" minOccurs="0" form="qualified">
                <xsd:annotation>
                    <xsd:appinfo source="http://sap.com/xi/TextID">7a21a39db3c311e1bef978e3b50a88fe</xsd:appinfo>
                    <xsd:documentation/>
                </xsd:annotation>
                <xsd:complexType>
                    <xsd:sequence>
                        <xsd:element name="Street" type="p7:StreetNameHR" minOccurs="0">
                            <xsd:annotation>
                                <xsd:appinfo source="http://sap.com/xi/TextID">7a21a39bb3c311e187e278e3b50a88fe</xsd:appinfo>
                                <xsd:documentation/>
                            </xsd:annotation>
                        </xsd:element>
                        <xsd:element name="City" type="p7:City" minOccurs="0">
                            <xsd:annotation>
                                <xsd:appinfo source="http://sap.com/xi/TextID">7a21a39cb3c311e18f8e78e3b50a88fe</xsd:appinfo>
                                <xsd:documentation/>
                            </xsd:annotation>
                        </xsd:element>
                        <xsd:element name="PostalCodeFrom" type="p7:PostalCode" minOccurs="0">
                            <xsd:annotation>
                                <xsd:appinfo source="http://sap.com/xi/TextID">943704b5b3c211e1c47678e3b50a88fe</xsd:appinfo>
                                <xsd:documentation/>
                            </xsd:annotation>
                        </xsd:element>
                        <xsd:element name="PostalCodeTo" type="p7:PostalCode" minOccurs="0">
                            <xsd:annotation>
                                <xsd:appinfo source="http://sap.com/xi/TextID">943704b6b3c211e1b3f578e3b50a88fe</xsd:appinfo>
                                <xsd:documentation/>
                            </xsd:annotation>
                        </xsd:element>
                        <xsd:element name="AreaDescription" type="p7:DescriptionHR" minOccurs="0">
                            <xsd:annotation>
                                <xsd:appinfo source="http://sap.com/xi/TextID">943704b7b3c211e186c378e3b50a88fe</xsd:appinfo>
                                <xsd:documentation/>
                            </xsd:annotation>
                        </xsd:element>
                    </xsd:sequence>
                </xsd:complexType>
            </xsd:element>
            <xsd:element name="WorkAgreementExtra" minOccurs="0" form="qualified">
                <xsd:annotation>
                    <xsd:appinfo source="http://sap.com/xi/TextID">7a21a3a2b3c311e19c5178e3b50a88fe</xsd:appinfo>
                    <xsd:documentation/>
                </xsd:annotation>
                <xsd:complexType>
                    <xsd:sequence>
                        <xsd:element name="HourPerDayMin" type="p7:Hours" minOccurs="0">
                            <xsd:annotation>
                                <xsd:appinfo source="http://sap.com/xi/TextID">7a21a39eb3c311e1901e78e3b50a88fe</xsd:appinfo>
                                <xsd:documentation/>
                            </xsd:annotation>
                        </xsd:element>
                        <xsd:element name="HourPerDayMax" type="p7:Hours" minOccurs="0">
                            <xsd:annotation>
                                <xsd:appinfo source="http://sap.com/xi/TextID">7a21a39fb3c311e1927578e3b50a88fe</xsd:appinfo>
                                <xsd:documentation/>
                            </xsd:annotation>
                        </xsd:element>
                        <xsd:element name="HourPerWeekMin" type="p7:Hours" minOccurs="0">
                            <xsd:annotation>
                                <xsd:appinfo source="http://sap.com/xi/TextID">7a21a3a0b3c311e197c978e3b50a88fe</xsd:appinfo>
                                <xsd:documentation/>
                            </xsd:annotation>
                        </xsd:element>
                        <xsd:element name="HourPerWeekMax" type="p7:Hours" minOccurs="0">
                            <xsd:annotation>
                                <xsd:appinfo source="http://sap.com/xi/TextID">7a21a3a1b3c311e1c17078e3b50a88fe</xsd:appinfo>
                                <xsd:documentation/>
                            </xsd:annotation>
                        </xsd:element>
                    </xsd:sequence>
                </xsd:complexType>
            </xsd:element>
            <xsd:element name="Depot" minOccurs="0" maxOccurs="unbounded" form="qualified">
                <xsd:annotation>
                    <xsd:appinfo source="http://sap.com/xi/TextID">7a21a3a6b3c311e1b8c278e3b50a88fe</xsd:appinfo>
                    <xsd:documentation/>
                </xsd:annotation>
                <xsd:complexType>
                    <xsd:sequence>
                        <xsd:element name="DepotPostalCode" type="p7:PostalCode" minOccurs="0">
                            <xsd:annotation>
                                <xsd:appinfo source="http://sap.com/xi/TextID">7a21a3a3b3c311e1a2f178e3b50a88fe</xsd:appinfo>
                                <xsd:documentation/>
                            </xsd:annotation>
                        </xsd:element>
                        <xsd:element name="DepotStreet" type="p7:StreetNameHR" minOccurs="0">
                            <xsd:annotation>
                                <xsd:appinfo source="http://sap.com/xi/TextID">7a21a3a4b3c311e1bf2478e3b50a88fe</xsd:appinfo>
                                <xsd:documentation/>
                            </xsd:annotation>
                        </xsd:element>
                        <xsd:element name="DepotCity" type="p7:City" minOccurs="0">
                            <xsd:annotation>
                                <xsd:appinfo source="http://sap.com/xi/TextID">7a21a3a5b3c311e19be578e3b50a88fe</xsd:appinfo>
                                <xsd:documentation/>
                            </xsd:annotation>
                        </xsd:element>
                    </xsd:sequence>
                </xsd:complexType>
            </xsd:element>
            <xsd:element name="AvailabilityOptional" minOccurs="0" maxOccurs="unbounded" form="qualified">
                <xsd:annotation>
                    <xsd:appinfo source="http://sap.com/xi/TextID">7a21c3c9b3c311e1ce3b78e3b50a88fe</xsd:appinfo>
                    <xsd:documentation/>
                </xsd:annotation>
                <xsd:complexType>
                    <xsd:sequence>
                        <xsd:element name="DayOfWeekOpt" type="p7:DayOfWeek">
                            <xsd:annotation>
                                <xsd:appinfo source="http://sap.com/xi/TextID">7a21c3c7b3c311e18cea78e3b50a88fe</xsd:appinfo>
                                <xsd:documentation/>
                            </xsd:annotation>
                        </xsd:element>
                        <xsd:element name="DayPartOpt" type="p7:DayPart">
                            <xsd:annotation>
                                <xsd:appinfo source="http://sap.com/xi/TextID">7a21c3c8b3c311e1cc8478e3b50a88fe</xsd:appinfo>
                                <xsd:documentation/>
                            </xsd:annotation>
                        </xsd:element>
                    </xsd:sequence>
                </xsd:complexType>
            </xsd:element>
            <xsd:element name="AmountDayRequired" type="p7:Count" minOccurs="0" form="qualified">
                <xsd:annotation>
                    <xsd:appinfo source="http://sap.com/xi/TextID">7a21c3cab3c311e1b2cb78e3b50a88fe</xsd:appinfo>
                    <xsd:documentation/>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="HomeDelivery" type="p7:Count" minOccurs="0" form="qualified">
                <xsd:annotation>
                    <xsd:appinfo source="http://sap.com/xi/TextID">7a21c3cbb3c311e1a63978e3b50a88fe</xsd:appinfo>
                    <xsd:documentation/>
                </xsd:annotation>
            </xsd:element>
        </xsd:sequence>
    </xsd:group>
</xsd:schema>

ExportXMLSchema2.xsd:

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema targetNamespace="http://company.org/mail/global/datatypes" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://company.org/mail/global/datatypes">
    <xsd:simpleType name="LanguageCode">
        <xsd:restriction base="xsd:language">
            <xsd:minLength value="2"/>
            <xsd:maxLength value="9"/>
        </xsd:restriction>
    </xsd:simpleType>
    <xsd:simpleType name="DayPart.Content">
        <xsd:annotation>
            <xsd:documentation xml:lang="EN">Part of the day</xsd:documentation>
        </xsd:annotation>
        <xsd:restriction base="xsd:string">
            <xsd:maxLength value="10"/>
        </xsd:restriction>
    </xsd:simpleType>
    <xsd:simpleType name="TeamID">
        <xsd:annotation>
            <xsd:documentation xml:lang="EN">Generic object for Team IDs (Used for ERECRUIT)</xsd:documentation>
        </xsd:annotation>
        <xsd:restriction base="xsd:token">
            <xsd:maxLength value="8"/>
        </xsd:restriction>
    </xsd:simpleType>
    <xsd:simpleType name="DescriptionHR">
        <xsd:annotation>
            <xsd:documentation xml:lang="EN">Generic description datatype used for HR objects</xsd:documentation>
        </xsd:annotation>
        <xsd:restriction base="xsd:string">
            <xsd:maxLength value="40"/>
        </xsd:restriction>
    </xsd:simpleType>
    <xsd:simpleType name="AreaID">
        <xsd:annotation>
            <xsd:documentation xml:lang="EN">Generic object for Area IDs (Used for ERECRUIT)</xsd:documentation>
        </xsd:annotation>
        <xsd:restriction base="xsd:token">
            <xsd:maxLength value="8"/>
        </xsd:restriction>
    </xsd:simpleType>
    <xsd:simpleType name="StreetNameHR">
        <xsd:annotation>
            <xsd:documentation xml:lang="EN">Generic Streetname datatype used for HR objects (40 pos.)</xsd:documentation>
        </xsd:annotation>
        <xsd:restriction base="xsd:string">
            <xsd:maxLength value="40"/>
        </xsd:restriction>
    </xsd:simpleType>
    <xsd:simpleType name="Count">
        <xsd:annotation>
            <xsd:documentation xml:lang="EN">Generic object for Count (Used by ERECRUIT)</xsd:documentation>
        </xsd:annotation>
        <xsd:restriction base="xsd:token">
            <xsd:maxLength value="1"/>
        </xsd:restriction>
    </xsd:simpleType>
    <xsd:simpleType name="TemporaryWorkerType">
        <xsd:annotation>
            <xsd:documentation xml:lang="EN">Temporary Worker (Tijdelijke hulpkracht (THK): N, K of J); TNT specific</xsd:documentation>
        </xsd:annotation>
        <xsd:restriction base="xsd:token">
            <xsd:maxLength value="1"/>
        </xsd:restriction>
    </xsd:simpleType>
    <xsd:simpleType name="JobPositionPostingID">
        <xsd:annotation>
            <xsd:documentation xml:lang="EN">Generic object for JobPosting IDs (Used for ERECRUIT)</xsd:documentation>
        </xsd:annotation>
        <xsd:restriction base="xsd:token">
            <xsd:maxLength value="8"/>
        </xsd:restriction>
    </xsd:simpleType>
    <xsd:simpleType name="PostalCode">
        <xsd:restriction base="xsd:token">
            <xsd:minLength value="1"/>
            <xsd:maxLength value="10"/>
        </xsd:restriction>
    </xsd:simpleType>
    <xsd:simpleType name="Hours">
        <xsd:annotation>
            <xsd:documentation xml:lang="EN">Generic datatype for hours</xsd:documentation>
        </xsd:annotation>
        <xsd:restriction base="xsd:int">
            <xsd:maxInclusive value="2"/>
            <xsd:minInclusive value="1"/>
        </xsd:restriction>
    </xsd:simpleType>
    <xsd:simpleType name="PublicationFunctionID">
        <xsd:annotation>
            <xsd:documentation xml:lang="EN">PublicationFunctionID for ERECRUIT</xsd:documentation>
        </xsd:annotation>
        <xsd:restriction base="xsd:token">
            <xsd:maxLength value="3"/>
        </xsd:restriction>
    </xsd:simpleType>
    <xsd:simpleType name="City">
        <xsd:annotation>
            <xsd:documentation xml:lang="EN">Cityname TNT</xsd:documentation>
        </xsd:annotation>
        <xsd:restriction base="xsd:string">
            <xsd:minLength value="1"/>
            <xsd:maxLength value="60"/>
        </xsd:restriction>
    </xsd:simpleType>
    <xsd:simpleType name="DayOfWeek.Content">
        <xsd:annotation>
            <xsd:documentation xml:lang="EN">Description day of the week</xsd:documentation>
        </xsd:annotation>
        <xsd:restriction base="xsd:string">
            <xsd:maxLength value="10"/>
        </xsd:restriction>
    </xsd:simpleType>
    <xsd:complexType name="DayPart">
        <xsd:simpleContent>
            <xsd:extension base="DayPart.Content">
                <xsd:attribute name="languageCode" type="LanguageCode"/>
            </xsd:extension>
        </xsd:simpleContent>
    </xsd:complexType>
    <xsd:complexType name="DayOfWeek">
        <xsd:simpleContent>
            <xsd:extension base="DayOfWeek.Content">
                <xsd:attribute name="languageCode" type="LanguageCode"/>
            </xsd:extension>
        </xsd:simpleContent>
    </xsd:complexType>
</xsd:schema>

我已經嘗試了幾種將服務引用導入我的項目的方法。 將其添加為服務引用,並使用SVCUTIL創建類文件並將其導入到我的項目中(基本上通過覆蓋原始服務引用)。 當我設置我的服務並在本地或我們的開發服務器上托管它時,該服務工作正常。 但是,我收到的消息(來自客戶端或我自己使用SoapUI發送的消息)從不包含復雜類型屬性。

示例消息包含可用性列表,如下所示:

<n0:Availability>
   <DayOfWeek>MAANDAG</DayOfWeek>
   <DayPart>OCHTEND</DayPart>
</n0:Availability>
<n0:Availability>
   <DayOfWeek>DINSDAG</DayOfWeek>
   <DayPart>OCHTEND</DayPart>
</n0:Availability>
<n0:Availability>
   <DayOfWeek>WOENSDAG</DayOfWeek>
   <DayPart>OCHTEND</DayPart>
</n0:Availability>

(n0匹配命名空間: http//company.org/mail/hrm/JobPublication

此消息在SoapUI中正確驗證,但是當我的服務收到消息時,DayOfWeek和DayPart的值為空。 我確實收到三個“可用性”值,因此部分工作。

我已經嘗試使用/ ImportXmlTypes和/或/ Serializer:XmlSerializer等選項使用SVCUTIL生成類文件,但似乎沒有任何效果。 在這個板上發現的建議似乎都沒有對我有用。 希望有人可以指出我忽略了什么。

提前致謝!

我發現我之前的一個解決方案畢竟是修復。

最有可能的解決方法是將schemaLocation屬性添加到XSD和WSDL中的導入行。 這是必要的,因為我提供此服務的公司改變了他們的公司名稱,使命名空間無法訪問。 我的猜測是,在這種情況下,如果是這種情況,您需要添加對原始XSD的引用。 我有一個本地副本,所以我指出了那個版本的XSD。 這樣,Visual Studio即使對於復雜類型也能夠創建代理類。

我測試它的方式出了什么問題。 每次我運行測試請求並進行調試時,我都在測試我的服務的舊版本,而不是我一直在進行的更新。我猜錯了新手,不幸的是我花了幾個小時才意識到這一點。 獲得的經驗教訓:確保您擁有可靠的本地測試環境,您可以在其中正確調試。

如果我認為解決方案是錯誤的,或者我還缺少什么,請告訴我。 可能對我或遇到類似問題的其他人有幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM