我正在实现一个WCF网络服务,与我无法控制其代码的客户端进行交互。 WSDL由客户端提供。
我使用SvcUtil从WSDL生成了C#文件,除了在此处讨论的错误之外,没有遇到任何问题。
在启用SSL(客户端要求)的IIS 7.0中托管服务后,我尝试让客户端向服务发出请求。
此时,我收到以下错误:
我验证了可以使用服务发布的元数据和SOAPUI一起进行相同的请求。这个方法很好用。
然后,我尝试使用客户端提供的WSDL来使用SOAPUI。但是出现了与上述相同的空操作错误,无法成功。
接着,我连接了Wireshark(启用了SSL解密),并验证了从客户端发送的消息确实缺少SOAPAction,因此这肯定是问题所在。
由于我不能更改客户端,有没有办法让WCF Web服务与这样的客户端进行交互呢?我猜想它需要接受没有SOAPAction的请求,并从SOAP包中请求对象的类型推导出所需的请求。
我使用SvcUtil从WSDL生成了C#文件,除了在此处讨论的错误之外,没有遇到任何问题。
在启用SSL(客户端要求)的IIS 7.0中托管服务后,我尝试让客户端向服务发出请求。
此时,我收到以下错误:
The message with Action '' cannot be processed at the receiver, due to a ContractFilter mismatch at the EndpointDispatcher. This may be because of either a contract mismatch (mismatched Actions between sender and receiver) or a binding/security mismatch between the sender and the receiver. Check that sender and receiver have the same contract and the same binding (including security requirements, e.g. Message, Transport, None).
我验证了可以使用服务发布的元数据和SOAPUI一起进行相同的请求。这个方法很好用。
然后,我尝试使用客户端提供的WSDL来使用SOAPUI。但是出现了与上述相同的空操作错误,无法成功。
接着,我连接了Wireshark(启用了SSL解密),并验证了从客户端发送的消息确实缺少SOAPAction,因此这肯定是问题所在。
由于我不能更改客户端,有没有办法让WCF Web服务与这样的客户端进行交互呢?我猜想它需要接受没有SOAPAction的请求,并从SOAP包中请求对象的类型推导出所需的请求。