2

xml のブロックを返す WCF サービスがあります。1 つの要素は CData[] セクションです。私のアプリケーションはデータベースから HTML ファイルを読み取り、ABCPDF を使用して PDF バイト [] 配列に変換します。次に、私の XmlWriter Im で 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 に答える