更改节点元素WCF中的URN
本文关键字:中的 URN WCF 元素 节点 | 更新日期: 2023-09-27 18:10:52
每个人。我正在开发一个使用消息契约和wcf的URN的遗留服务,我有这个小但非常棘手的不便。
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:UMARKETSPIWS:v2" xmlns:gps="http://schemas.datacontract.org/2004/07/GPS">
<soapenv:Header/>
<soapenv:Body>
<urn:CreditAirtime>
<!--Optional:-->
<urn:transactionId>321321</urn:transactionId>
<!--Optional:-->
<urn:extraParameters>
<!--Zero or more repetitions:-->
<gps:KeyValuePairs>
<!--Optional:-->
<gps:key>?</gps:key>
<!--Optional:-->
<gps:value>?</gps:value>
</gps:KeyValuePairs>
</urn:extraParameters>
<!--Optional:-->
<urn:msisdn>50370823063</urn:msisdn>
<!--Optional:-->
<urn:amount>5</urn:amount>
</urn:CreditAirtime>
</soapenv:Body>
</soapenv:Envelope>
我想在extraParameters部分将gps:tag更改为urn:示例:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:UMARKETSPIWS:v2" xmlns:gps="http://schemas.datacontract.org/2004/07/GPS">
<soapenv:Header/>
<soapenv:Body>
<urn:CreditAirtime>
<!--Optional:-->
<urn:transactionId>321321</urn:transactionId>
<!--Optional:-->
<urn:extraParameters>
<!--Zero or more repetitions:-->
<urn:KeyValuePairs>
<!--Optional:-->
<urn:key>?</gps:key>
<!--Optional:-->
<urn:value>?</gps:value>
</urn:KeyValuePairs>
</urn:extraParameters>
<!--Optional:-->
<urn:msisdn>50370823063</urn:msisdn>
<!--Optional:-->
<urn:amount>5</urn:amount>
</urn:CreditAirtime>
</soapenv:Body>
</soapenv:Envelope>
我已经尝试添加[MessageBodyMember(Name="key",Order=0,Namespace="urn:"(],但似乎没有工作,其他一切都很好,但我真的不知道从哪里开始。
此处的接口和类。http://pastebin.com/dtjmXQaz
MessageContract
属性仅控制与SOAP消息信封相对应的类型的SOAP格式设置,该类型是直接出现在OperationContract
中的类型之一。对于未映射到SOAP消息但仅由根消息类型引用的类型,需要使用数据协定属性。因此:
[DataContract(Namespace = "urn:UMARKETSPIWS:v2")]
public class KeyValuePair
{
[DataMember(Name = "key", Order = 0)]
public string key { get; set; }
[DataMember(Name = "value", Order = 1)]
public string value { get; set; }
}
事实上,对于不需要对SOAP消息格式或安全性进行精确控制的简单消息,通常可以只使用数据契约属性。请参阅在服务约定中使用消息约定和指定数据传输。