2

我有一个返回 xml 块的 WCF 服务。一个元素是 CData[] 部分。我的应用程序从数据库中读取 HTML 文件,并使用 ABCPDF 将其转换为 PDF byte[] 数组。然后在我的 XmlWriter 中,我将字节添加到 CData 部分。

问题是生成的 xml 如下所示:

<![CDATA[System.Byte[]]]>

如何将字节串放入 CData 部分?我试过这样的事情:

string str;
ASCIIEncoding enc = new ASCIIEncoding();
str = enc.GetString(theData);

Convert.ToBase64String(theData);

我卡住了!!任何帮助都会很棒,谢谢!

4

2 回答 2

7

如果您可以控制两端,那么使用Convert.ToBase64String(data)绝对是您的最佳选择。您不想发送“原始”字节并假装它们是有效的文本数据。Convert.FromBase64String(text)在另一边使用。

不过,我有点惊讶 WCF 并没有自动为您处理这个问题。我不能说我自己使用过它(Marc Gravell 可能会出现——我相信他在这方面有很多经验),但我希望它只公开字节数组。为什么要参与 XML 级别的工作?

于 2009-06-08T12:29:05.413 回答
0

很难确切地说出您的问题发生在哪里 - 更完整的代码示例可能会有所帮助。但是从你显示的序列化来看 - 它看起来很像ToString()在你的byte[].

Convert.ToBase64String()如果您尝试通过网络发送二进制数据,您应该考虑使用。如果您无法控制接收格式,则需要查看它需要什么编码。

于 2009-06-08T13:12:42.580 回答