Я использую настраиваемое пользовательское расширение для конечных точек для перехвата сообщений по мере их получения моей конечной точкой службы WCF с помощью IDispatchMessageInspector. Я извлечь содержимое сообщения, как это:Конечная точка WCF: Message.WriteMessage изменяет закрывающие теги внутри XML-сообщения
public object AfterReceiveRequest(ref Message request, IClientChannel channel, InstanceContext instanceContext)
{
MessageBuffer messageBuffer = request.CreateBufferedCopy(Int32.MaxValue);
Message message = messageBuffer.CreateMessage();
using (MemoryStream stream = new MemoryStream())
{
using (XmlWriter writer = XmlWriter.Create(stream))
{
message.WriteMessage(writer);
writer.Flush();
stream.Position = 0;
}
}
}
Мне нужно, чтобы получить сообщение XML точно так, как он отправленный клиентом, но XML, который записывается в поток, кажется, быть модифицирован WCF (или XmlWriter ?). Моя основная проблема заключается в том, что он модифицировал закрывающие теги: <id />
становится <id></id>
всюду в XML-сообщении. Есть ли способ написать содержимое сообщения, когда оно было получено конечной точкой без его модификации (или, по крайней мере, без изменения способа закрытия тегов?
Но и одинаковы, почему это имеет значение? –
Я знаю, что они такие же, но мне не нужно каким-либо образом изменять тело сообщения. Тело должно оставаться точно таким, каким оно было отправлено клиентом. – mlessard
Вы не изменяете его - стек WCF на стороне клиента и службы является ..... –