2010-02-02 28 views
9

Tengo un mensaje WCF (Channels.Message) que estoy tratando de extraer el cuerpo usando .GetBody(). sin embargo, me doy cuenta de que solo puedo hacerlo una vez, y si intento utilizar "GetBody <>" de nuevo, aparece: "Este mensaje no admite la operación porque se ha leído".Lea el cuerpo del mensaje WCF dos veces: "No se puede leer el mensaje"

¿Alguna idea de cómo puedo volver a leer el cuerpo del mensaje?

gracias

Respuesta

13

Aquí es un buen artículo acerca de lo que está tratando de hacer en MSDN. Consulte la sección titulada Copiar un mensaje en un búfer. Habla explícitamente de tener que acceder al cuerpo del mensaje más de una vez.

http://msdn.microsoft.com/en-us/library/ms734675.aspx

+0

que no ayuda mucho .... aprendí que se puede leer un cuerpo del mensaje sólo una vez, pero no puedo encontrar MSFT lógica aquí ... –

+5

En concreto, afirma el artículo. .. "A veces es necesario acceder al cuerpo del mensaje más de una vez, por ejemplo, para reenviar el mismo mensaje a múltiples destinos como parte de un sistema editor-suscriptor. En este caso, es necesario almacenar el mensaje completo (incluido el cuerpo) en la memoria. Puede hacerlo llamando a CreateBufferedCopy ". Si observa el código de muestra en esta sección, muestra el acceso al cuerpo de un mensaje más de una vez utilizando CreateBufferedCopy –

Cuestiones relacionadas