我一直在使用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吗?还有别的吗?
答案 0 :(得分:1)
我们通常会将加密的字节数据转换为base64字符串,然后再通过网络发送。
答案 1 :(得分:0)
您可能正在尝试将字节转换为符号。由于加密,您会得到一些奇怪的符号,这些符号无法用XML处理器处理。我不太熟悉WCF,但我可以建议将转换字节用于字符串:
{a0, 23, cd, 5e, ff} => "a023cd5eff"