我有一个定义如下的WCF操作:
[OperationContract(Name="GetColorsRQ")]
GetColorsRS GetColors(GetColorsRQ rq);
GetColorsRS
将保留响应,GetColorsRQ
保留请求。当我运行它时,它会创建以下soap请求(我只包括请求的开头)
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:ns="http://www.abc.com">
<soapenv:Header/>
<soapenv:Body>
<ns:GetColorsRQ>
<ns:rq Target="Test" Version="0">
....
当我使用来自asmx服务的相同请求时,它不会嵌套请求,它会像下面这样做:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:ns="http://www.abc.com">
<soapenv:Header/>
<soapenv:Body>
<ns:GetColorsRQ Target="Test" Version="0">
....
注意,现在没有ns:rq,并且这些属性已放在ns:GetColorsRQ节点上。
答案 0 :(得分:0)
经过研究,我已确定必须使用MessageContract而不是DataContract来更好地控制消息。