【问题标题】:Send empty soap body response from WCF operation of type void从 void 类型的 WCF 操作发送空肥皂体响应
【发布时间】:2013-03-22 13:42:08
【问题描述】:

我们正在使用 .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 来测试服务。

【问题讨论】:

    标签: wcf response


    【解决方案1】:

    我们通过使用 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?得到了答案

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-25
      • 2018-04-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多