如何防止以下嵌套的soap请求?

时间:2011-06-22 18:30:15

标签: wcf soap

我有一个定义如下的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节点上。

1 个答案:

答案 0 :(得分:0)

经过研究,我已确定必须使用MessageContract而不是DataContract来更好地控制消息。