【问题标题】:How can I best send encrypted data to a WCF service?如何最好地将加密数据发送到 WCF 服务?
【发布时间】:2011-12-16 03:58:43
【问题描述】:

我一直在将加密数据从我的应用程序发送到我的 WCF 服务,只需使用 byte[] 作为数据类型。但是,在极少数情况下,我会看到这些类型的错误:

代理对(0xD8CC,0xAF1F)无效。高代理 字符 (0xD800 – 0xDBFF) 必须始终与低代理项配对 字符 (0xDC00 – 0xDFFF)

代理对(0xD8AC,0xE332)无效。高代理 字符 (0xD800 - 0xDBFF) 必须始终与低代理项配对 字符 (0xDC00-0xDFFF)。

代理对(0xD8CC,0xAAE9)无效。高代理 字符 (0xD800 - 0xDBFF) 必须始终与低代理项配对 字符 (0xDC00-0xDFFF)。

无效的高代理字符 (OxDF44)。一个高代理字符 必须有一个范围内的值(OxD800 - OxDBFF)

经过一番摸索之后,我怀疑这是加密导致 WCF XML 无法处理的字节序列时的结果。有没有更好的方法通过 WCF 传输我的加密数据?救命!

我想错误可能发生在任一方向。这是我的 .svc 中的内容。

public byte[] GetEncryptedResult(byte[] encryptedRequest)
{
    return ....
}

另一种可能性 - 这不是在 WCF 中发生的,而是在我加密数据时发生的。数据被放入 XML,加密,通过 WCF 传输,解密为 XML。

我可以使用 DataContractSerializer 吗?还有什么?

【问题讨论】:

  • 我没有更多细节。除了加密请求的大小
  • 显示你的服务的定义。显示你是如何称呼它的。显示实际异常(包括堆栈跟踪),而不仅仅是异常 Message
  • 更多细节 - 用户来自世界各地。也许可能有一些本地编码问题导致 WCF 出现问题?
  • 好建议,我再调查一下。

标签: c# xml wcf


【解决方案1】:

我们通常将加密的字节数据转换为 base64 字符串,然后再通过网络发送。

【讨论】:

    【解决方案2】:

    您可能正在尝试将字节转换为符号。由于加密,您会得到一些奇怪的符号,XML 处理器无法处理这些符号。我对 WCF 不太熟悉,但我可以推荐通过这种方式将字节转换为字符串:

    {a0, 23, cd, 5e, ff} => "a023cd5eff"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多