【发布时间】:2015-09-02 23:44:37
【问题描述】:
每个人。 我正在开发一个使用消息合约和 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: 标签更改为 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
【问题讨论】:
-
命名空间应该是
"urn:UMARKETSPIWS:v2"而不是"urn:"。urn:只是对实际命名空间的查找 prefix。除此之外,你能分享你的课程吗,包括KeyValuePairs和extraParameters? -
已经更正了 urn 命名空间,但仍然可以修改 keyvalupairs 的命名空间,这里是接口和类pastebin.com/dtjmXQaz 谢谢。
标签: c# xml wcf serialization soap