当前位置:  开发笔记 > 编程语言 > 正文

WCF客户端调用单向操作的问题

如何解决《WCF客户端调用单向操作的问题》经验,为你挑选了1个好方法。

从WCF客户端调用SAP PI总线上的Web服务时遇到问题.该操作被定义为单向,并且在添加服务引用时,相应地对我的代理操作契约上的方法进行了装饰.但是,服务客户端在调用相应操作时会收到异常:

单向操作返回一个非空消息,其中Action =''

使用SoapUI,可以成功调用总线上的方法,并返回一个空主体的SOAP信封.公交人员告诉我,这是根据SOAP规范:


(SOAP规范,第4.7.9章,单向操作):

在执行单向操作时,如何使用HTTP有不同的解释.

R2714对于单向操作,INSTANCE绝不能返回包含信封的HTTP响应.具体来说,HTTP响应实体主体必须为空.

R2750消费者必须在单向操作中忽略HTTP响应消息中携带的信封.

R2727对于单向操作,消费者不得将成功的HTTP响应状态代码(即2xx)解释为意味着消息有效或接收者将处理它.


所以看来,我的WCF客户端不符合R2750.

我发现当我强制代理的操作合同为IsOneWay = false时,一切正常.

WCF处理单向操作的方式有什么问题,或者我做错了什么(更有可能)?还有什么我应该做的,覆盖生成的WCF代理客户端似乎是不对的.

谢谢你的任何建议.



1> Brian Low..:

看起来SAP PI错误地发送了一个空的SOAP信封,并且.NET错误地解释了该信封.

这个帖子的一些选项:

更改生成的代理并删除OneWay = true(或添加OneWay = false)到方法定义

捕获异常处理程序中的Protocol Violation并忽略它

使用2.0样式的webreference来调用服务

应用SAP补丁说明1459995 - Soap Sender Adapter HTTP 202并将urc添加到responsecode202 = true

第一个也是最后一个选项都适合我.关于这个sap.com线程的进一步讨论.

推荐阅读
Life一切安好
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有