Как читать System.ServiceModel.Message? - PullRequest
1 голос
/ 13 ноября 2011

Я сталкивался с такой ситуацией.

Основная функция:

Message msg = Message.CreateMessage(MessageVersion.Default, "Process");
String xmlData ="<Name>Navin</Name>";
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: это сообщение не может быть отменено Операция, потому что она была написана.

Как это преодолеть.

Ожидание ответа.

Заранее спасибо.

1 Ответ

1 голос
/ 13 ноября 2011

Согласно методу MSDN Message.GetReaderAtBodyContents , вы не можете получить доступ к телу сообщения после того, как оно прочитано или записано - к нему можно получить доступ только один раз. Вам необходимо использовать CreateBufferedCopy для многократного доступа к сообщению.

Я не нашел никаких примеров в документации MSDN, но похоже, что вам нужно создать экземпляр MessageBuffer с помощью Message.CreateBufferedCopy, а затем вы можете использовать метод CreateMessage MessageBuffer, чтобы получить доступ к содержимому буфер.

См:

Message.CreateBufferedCopy Method

Класс MessageBuffer

Метод MessageBuffer.CreateMessage

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...