Web服务调用生成的XML与服务类不对应

时间:2015-01-16 14:47:14

标签: c# xml web-services wcf

我在WCF中遇到Web服务调用问题。服务调用生成的XML与Visual Studio生成的Reference.cs中定义的类不对应。服务参考是最新的。

以下是Reference.cs的相关部分。为清晰起见省略了属性:

public partial class charterBooking : basePublicType {
    private additionalCost[] additionalCostsField;
    //.. lots of other properties
}

public partial class additionalCost : basePublicType {

    private long additionalCostItemIDField;

    private bool additionalCostItemIDFieldSpecified;

    private short categoryField;

    private bool categoryFieldSpecified;

    private short chargeToField;

    //.. lots of other properties
}

此调用产生的XML:

response = proxy.saveCharterDetails(saveCharterDetails);

看起来像这样(由Fiddler抓住):

   <s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
      <saveCharterDetails xmlns="http://bcs.aircharter.co.uk/acs">
         <charterEnquiry xmlns="">
            <brokerCode>EX</brokerCode>
            <charterBooking>
               <additionalCosts>
                  <description>3</description>
                  <supplierName>2</supplierName>
               </additionalCosts>
               <aircraftRegistration/>
               <balanceAmount>205</balanceAmount>
               <!-- ...lots and lots of other xml -->
            </charterBooking>
         </charterEnquiry>
      </saveCharterDetails>
   </s:Body>

以下是WSDL的摘录:

<xs:complexType name="additionalCost">
  <xs:complexContent>
    <xs:extension base="tns:basePublicType">
      <xs:sequence>
        <xs:element maxOccurs="unbounded" minOccurs="0" name="additionalCostAudits" nillable="true" type="tns:additionalCostAudit"/>
        <xs:element minOccurs="0" name="additionalCostItemID" type="xs:long"/>
        <xs:element minOccurs="0" name="category" type="xs:short"/>
        <xs:element minOccurs="0" name="chargeTo" type="xs:short"/>
        <xs:element minOccurs="0" name="chargeToDetails" type="xs:string"/>
        <xs:element minOccurs="0" name="charterEnquiryID" type="xs:long"/>
        <xs:element minOccurs="0" name="dateAdded" type="xs:dateTime"/>
        <xs:element minOccurs="0" name="description" type="xs:string"/>
        <xs:element minOccurs="0" name="invoiceCurrency" type="xs:short"/>
        <xs:element minOccurs="0" name="isDeleted" type="xs:boolean"/>
        <xs:element minOccurs="0" name="isInvoiceSeparately" type="xs:boolean"/>
        <xs:element minOccurs="0" name="purchaseCurrency" type="xs:short"/>
        <xs:element minOccurs="0" name="purchasePrice" type="xs:double"/>
        <xs:element minOccurs="0" name="sellCurrency" type="xs:short"/>
        <xs:element minOccurs="0" name="sellPrice" type="xs:double"/>
        <xs:element minOccurs="0" name="supplierName" type="xs:string"/>
      </xs:sequence>
    </xs:extension>
  </xs:complexContent>
</xs:complexType>

如您所见,XML中的additionalCost看起来与C#实体中的additionalCost不同。它应该是一个数组!

我错过了什么?

中号

0 个答案:

没有答案