使用给定的肥皂消息构建WCF服务的最佳方法

时间:2018-11-24 23:14:31

标签: c# wcf soap

我需要在下面为给定的SOAP消息构建服务,我的客户端将使用此肥皂消息来调用我的新WCF服务。

我开始构建wcf basicHTTPBinding。

我需要知道如何以保证接收客户呼叫的方式构建服务。

<soapenv:Envelope
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns:xsd="http://www.w3.org/2001/XMLSchema"
  xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
  xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
  <soapenv:Header>
    <ctx:clientContext
      xmlns:ctx="http://ClientContext">
      <ctx:clientUserId>775</ctx:clientUserId>
    </ctx:clientContext>
    <To soapenv:mustUnderstand="1" xmlns="http://schemas.microsoft.com/ws/2005/05/addressing/none">http://myserverurl.com/Services/UpdateRequest.svc/soapService</To>
    <Action soapenv:mustUnderstand="1" xmlns="http://schemas.microsoft.com/ws/2005/05/addressing/none">updateRequestStatus</Action>
  </soapenv:Header>
  <soapenv:Body>
    <p20:updateRequestStatus xmlns:p20="http://com.myservice.update.ws">
      <requestId xmlns="">6699</requestId>
      <status xmlns="">Approved</status>
    </p20:updateRequestStatus>
  </soapenv:Body>
</soapenv:Envelope>

我试图实现这样的服务,并将其发布给我的客户以进行调用。客户端致电我的服务时发生错误:

下面的错误说明:

由于EndpointDispatcher上的ContractFilter不匹配,因此无法在接收方处理带有操作'updateRequestStatus'的消息。这可能是由于合同不匹配(发送方和接收方之间的操作不匹配)或发送方和接收方之间的绑定/安全不匹配造成的。检查发送方和接收方具有相同的合同和绑定(包括安全要求,例如消息,传输,无)。

任何帮助解决此问题的方法。

非常感谢。

1 个答案:

答案 0 :(得分:0)

我通过为给定的WSDL生成C#类来解决这种情况。它将使用以下命令为该WSDL构建接口:wsdl“ wsdl文件路径”“ xsd文件路径”。 然后根据生成的类,创建WCF服务并为我的服务实现所有必需的方法。

基于此,任何具有上述肥皂消息的客户端都可以使用我的服务而不会发生任何冲突。