我的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是我对他们发送内容的理解。
提前致谢!
答案 0 :(得分:1)
不确定它在operationcontract中是否可行。尝试使用消息合同,它将为您提供所需的灵活性。如果失败,请使用带有方法标志ParameterStyle = SoapParameterStyle.Bare的xmlserializer合约。