如何从WCF中的soap信封体中删除操作元素?

时间:2014-03-22 03:37:22

标签: web-services wcf soap

我的WCF服务设置主要是针对客户的规格,但我想根据客户的样品请求排除信封体所需的一个额外元素。

这些是我的服务和运营合同:

[ServiceContract(Namespace="http://www.somenamespace.com")]
public interface IProcessPayment
{
    [OperationContract]
    ResponseSubmitPayment execute(RequestSubmitPayment RequestSubmitPayment);
}

这是他们用以下方式发送测试我的服务的内容:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:pay="http://www.somenamespace.com">
<soapenv:Header/>
  <soapenv:Body>
    <pay:RequestSubmitPayment>
       <!-- irrelevant stuff -->
    </pay:RequestSubmitPayment>
  </soapenv:Body>
</soapenv:Envelope>

这就是我的服务所期望的(基于SOAPUI):

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:pay="http://www.somenamespace.com">
   <soapenv:Header/>
   <soapenv:Body>
      <pay:execute> <!-- I want to remove this! -->
         <pay:RequestSubmitPayment>
            <!-- irrelevant stuff -->
         </pay:RequestSubmitPayment>
      </pay:execute> <!-- I want to remove this! -->
   </soapenv:Body>
</soapenv:Envelope>

如何配置我的WCF服务以不要求或排除该元素?客户告诉我他们有许多其他客户成功测试和实施。 SOAP 1.1是我对他们发送内容的理解。

提前致谢!

1 个答案:

答案 0 :(得分:1)

不确定它在operationcontract中是否可行。尝试使用消息合同,它将为您提供所需的灵活性。如果失败,请使用带有方法标志ParameterStyle = SoapParameterStyle.Bare的xmlserializer合约。