0

我正在将旧版 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>
4

1 回答 1

0

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

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

使用消息契约

于 2015-04-08T18:02:05.530 回答