从类型为void的WCF操作发送空的soap body响应

时间:2013-03-22 13:42:09

标签: wcf response

我们正在使用.NET WCF服务项目重建基于第三方WDSL的Web服务。 然而,客户端期望对所有操作做出响应,即使它们是无效类型。 空体将用于表示操作已成功完成。

响应应如下所示:

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

问题是我们新创建的wcf服务没有响应主体,即使我们使用SOAP 1.1消息格式和基本的http绑定抛出错误。

是否有办法始终1.发送响应正文,2。使用SOAP 1.1发送错误正文? 我们正在使用SoapUI来测试服务。

1 个答案:

答案 0 :(得分:0)

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

只要服务的传输级别没有错误,这使得所有方法都返回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?

得到答案