【发布时间】:2018-01-31 10:29:01
【问题描述】:
我正在编写一个接受 XML 数据的 WCF 服务。但是,当我使用该服务时,它接收到的参数为空值。
这是我的服务合同:
[OperationContract]
[ServiceKnownType(typeof(ECardPaymentModel))]
[ServiceKnownType(typeof(TransactionInformation))]
[WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Xml, BodyStyle = WebMessageBodyStyle.Bare, UriTemplate = "ECardPayment")]
string ECardPayment(ECardPaymentModel Payment);
数据合同:
[DataContract(Name = "Payment", Namespace = "")]
[Serializable]
public class ECardPaymentModel
{
[DataMember(Name = "TransactionInfo")]
public TransactionInformation TransactionInfo { get; set; }
}
[DataContract(Name = "TransactionInfo")]
public class TransactionInformation
{
[DataMember(Name = "customer")]
public string Customer { get; set; }
[DataMember(Name = "transid")]
public string TransID { get; set; }
}
我用来调用服务的 XML:
<Payment>
<TransactionInfo>
<customer>HD000083</customer>
<transid>1001</transid>
</TransactionInfo>
</Payment>
但是,当我收到的 Payment.TransactionInfo.Customer 和 Payment.TransactionInfo.TransID 的值都为空时。
我不知道我错在哪里。因为当我使用扁平物体时,比如
[DataContract(Name = "Payment")]
public class ECardPaymentModel
{
[DataMember(Name = "customer")]
public string Customer { get; set; }
[DataMember(Name = "transid")]
public string TransID { get; set; }
}
和 XML 一样,
<Payment>
<customer>HD000083</customer>
<transid>1001</transid>
</Payment>
我收到了 Payment.Customer 和 Payment.TransID 的正确值。
【问题讨论】: