0

我们正在使用 .NET WCF 服务项目重新创建基于第三方 WDSL 的 Web 服务。然而,客户期待所有操作的响应,即使它们是 void 类型。空正文将用于指示操作成功完成。

响应应如下所示:

<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 来测试服务。

4

1 回答 1

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 和确认中得到了答案 - 我是否需要向客户发回“OK 得到它”?

于 2013-03-22T16:29:50.677 回答