如何才能最好地将加密数据发送到WCF服务?

时间:2011-12-16 03:58:43

标签: c# xml wcf

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

  

代理对(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吗?还有别的吗?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

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