C# WCF请求格式

C# WCF请求格式,c#,.net,wcf,wsdl,messagecontract,C#,.net,Wcf,Wsdl,Messagecontract,我正在将传统web服务转换为WCF服务。前端应用程序当前正在使用此服务。但到目前为止,前端不会使用新的WCF服务,因此我们计划将请求重新路由到新服务。这里的关键是,新的WCF服务应该能够处理旧的输入请求,并且应该能够以完全相同的格式发送回响应 当我生成wsdl并将其添加到soapUI项目中时。主体被包装在一个带有方法名称的标记中(“UserVerification”是操作契约名称),有没有办法在不使用消息契约的情况下处理这个问题(我对输入参数使用传统类型,因此无法更改它们) 现在情况是这样的:

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

当我生成wsdl并将其添加到soapUI项目中时。主体被包装在一个带有方法名称的标记中(“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>

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

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