从我的 WCF 客户端调用 SAP PI 总线上的 Web 服务时遇到问题。操作定义为单向,我的代理操作合约上的方法在添加服务引用时进行了相应的修饰。但是,服务客户端在调用相应操作时会出现异常:
单向操作返回了一条带有 Action='' 的非空消息
使用 SoapUI,可以成功调用总线上的方法,并返回一个空主体的 SOAP 信封。巴士人员告诉我,这是根据 SOAP 规范:
(SOAP 规范,第 4.7.9 章,单向操作):
在执行单向操作时如何使用 HTTP 有不同的解释。
R2714对于单向操作,实例不得返回包含信封的 HTTP 响应。具体来说,HTTP 响应实体主体必须为空。
R2750消费者必须在单向操作中忽略 HTTP 响应消息中携带的信封。
R2727对于单向操作,消费者不得将成功的 HTTP 响应状态代码(即 2xx)解释为消息有效或接收者将处理它。
看来,我的 WCF 客户端不符合 R2750。
我发现当我强制代理上的操作合同为IsOneWay = false时,一切正常。
WCF 处理单向操作的方式有什么问题,还是我做错了什么(更有可能)?还有什么我应该做的吗,覆盖生成的 WCF 代理客户端似乎不正确。
感谢您的任何建议。