我在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不同。它应该是一个数组!
我错过了什么?
中号