System.ServiceModel.Messageの読み込み方法

私はこの状況に遭遇しました。

メイン機能:

Message msg = Message.CreateMessage(MessageVersion.Default, "Process");
String xmlData ="Navin";
Byte[] ba = Encoding.ASCII.GetBytes(xmlData);
MemoryStream ms = new MemoryStream(ba);

XmlWriter xw = XmlWriter.Create(ms);

msg.WriteBody(xw);

readMessage(msg);

readMessage(メッセージmsg):

XmlDictionaryReader xdr = msg.GetReaderAtBodyContents();

いつ私はこのエラーが表示されます。
未処理の例外:System.InvalidOperationException:このメッセージは、
それが書かれているので、操作をrtしてください。

これを克服する方法。

応答を待っています。

前もって感謝します。

ベストアンサー

MSDNによると Message.GetReaderAtBodyContentsメソッドそれが読み書きされるとメッセージ本体にアクセスすることはできません。一度しかアクセスできません。メッセージに複数回アクセスするには、
‘CreateBufferedCopy’を使用する必要があります。

MSDNのドキュメントでは例は見つかりませんでしたが、Message.CreateBufferedCopyでMessageBufferインスタンスを作成し、次にMessageBufferのCreateMessageメソッドを使用してバッファの内容にアクセスできるように見えます。

見る:

Message.CreateBufferedCopyメソッド

MessageBufferクラス

MessageBuffer.CreateMessageメソッド

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です