2013-03-22 82 views
0

我们正在使用.NET WCF服务项目重新创建基于第三方WDSL的Web服务。 然而,即使客户端是无效类型,客户端仍然期待所有操作的响应。 空体将用于表示操作成功完成。从WCF类型void WCF操作发送空soap对象响应

的反应应该是这样的:

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> 
    <s:Body/> 
</s:Envelope> 

的问题是,我们的新创建的WCF服务具有即使我们使用SOAP 1.1消息格式和基本的HTTP绑定抛出的FaultException没有反应的身体。

是否有办法始终1.发送响应主体,2.使用SOAP 1.1发送故障主体? 我们使用SoapUI来测试服务。

回答

0

我们通过使用svcutil.exe实用程序和现有的WDSL文件生成接口代码来重新创建现有的webservice。它生成的接口代码具有一个属性,可以将所有操作定义转换为单向方法。

只要在服务的传输级别上没有错误,就会使所有方法返回一个http 202接受的响应。

我们只是简单地引用了我们新的web服务代码后面的接口,并实现了所有方法,但实际上并不知道IsOneWay属性的含义。

[System.ServiceModel.OperationContractAttribute(IsOneWay = true, Action = "Case_New")] 

转换定义是IsOneWay = false实际上改变了服务的行为,完全按照我们喜欢的方式进行。

[System.ServiceModel.OperationContractAttribute(IsOneWay = false, Action = "Case_New")] 

我们得到的答案从WCF and confirmations - do I need to send back a 'OK got it' to client?