WCF请求格式

时间:2015-04-08 17:46:07

标签: c# .net wcf wsdl messagecontract

我正在将旧版Web服务转换为WCF服务。此服务目前正由前端应用程序使用。但截至目前,前端不会使用新的WCF服务,因此我们计划将请求重新路由到我们的新服务。这里的问题是新的WCF服务应该能够处理旧的输入请求,并且应该能够以完全相同的格式发回响应。

当我生成wsdl并将其添加到soapUI项目中时。 Body正在使用方法名称包装在标签内(" UserVerification"是操作合同名称),有没有办法处理这个而不使用消息合同(我使用传统类型输入参数所以不能改变它们)

现在就是这样:

<soapenv:Body>
  <wes:UserVerification>
     <!--Optional:-->
     <wes:userVerificationRequest wes:Direction="Request" >

     </wes:userVerificationRequest>
  </wes:UserVerificatio>
</soapenv:Body>

我希望它像这样

<soapenv:Body>
    <wes:UserVerificationRequest wes:Direction="Request" >

    </wes:UserVerificationRequest>
</soapenv:Body>

1 个答案:

答案 0 :(得分:0)

默认情况下,WCF使用“Wrapped”消息样式。如果您希望能够控制消息的序列化方式,则可以通过使用MessageContractAttribute进行装饰来定义显式消息。使用显式消息协定,您可以将IsWrapped属性设置为false。

在你的情况下,我认为EchoRequest和EchoResponse根本不应该是DataContracts,而是MessageContracts。它们看起来很像MessageContracts给我。

Using Message Contracts