wcf - 使用二进制文件时丢失 WCF 故障异常详细信息

标签 wcf soap encoding wcf-binding faultexception

我有一个具有以下自定义绑定(bind)的 WCF 服务:

    <binding name="binaryHttpBinding" >
      <binaryMessageEncoding />
      <httpTransport maxReceivedMessageSize="2147483647" />
    </binding>

(客户端当然具有与此绑定(bind)匹配的配置)。问题是客户端没有收到通用的FaultException,例如客户端没有收到“T”,如果我跟踪调用,我可以验证它。但是,如果我使用 Soap 1.2 将 binaryMessageEncoding 替换为 textMessageEncoding,则所有错误异常都会包含错误详细信息。

我在网上进行了搜索,但没有找到任何声称 HTTP 上的二进制消息编码与通用 WCF 错误异常不兼容的信息。而且,我似乎无法控制大部分二进制消息编码 - 例如,我无法在配置中设置 SOAP 消息版本(WCF 不支持二进制编码)。不知道是否支持这种场景。

最佳答案

在花了相当多的时间试图找出可能出现问题的地方之后,我终于成功了。失败的两个原因,但都不明显。

  1. 错误消息类已重写执行一些计算的 ToString 方法。当然,将这样的逻辑放入 ToString 中是不明智的,但谁能猜到这只会影响二进制序列化?
  2. FaultException 构造函数有一个可选参数“actionName”,我将其设置为发生异常的方法的名称。显然,WCF 对于可以分配给操作名称的内容非常挑剔,但将其保留为空白总是可行的。再说一遍,谁能猜到它只影响二进制序列化并且以如此奇怪的方式(因此它丢弃客户端的消息错误)?

关于wcf - 使用二进制文件时丢失 WCF 故障异常详细信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26438881/

相关文章:

wcf - 如何允许我的 Azure 网站访问我的 Azure 云服务

java - 将 SOAPMessage 对象转换为 Java 中 XmlType 注释类的实例

c# - 如何在不添加 Web 引用的情况下调用 SOAP Web 服务

javascript - 如何使用/解析 JavaScript 字符串中的 HTML 实体和 Unicode 字符

.net - wcf 测试客户端不支持此操作,因为它使用类型 system.object[]

Silverlight 4 WCF RIA服务超时问题

xml - 为什么外籍人士拒绝破折号字符无效?

c# - 在没有 base64 编码的情况下通过 https 发送字节数组的方法?

c# - WCF新手问题: Calling Methods from JavaScript

java - Webservice JAX RPC 客户端如何与受 OWSM 保护的服务配合使用