IDispatchMessageInspector для регистрации простых мыльных сообщений? - PullRequest
2 голосов
/ 06 января 2010

Я написал WCF IDispatchMessageInspector, чтобы я мог регистрировать входящие и исходящие сообщения. Но я не уверен, как получить красиво отформатированную строку XML для регистрации.

Мой код выглядит примерно так:

        public object AfterReceiveRequest(ref Message request, IClientChannel channel, InstanceContext instanceContext)
    {
        MessageBuffer buffer = request.CreateBufferedCopy(Int32.MaxValue);
        request = buffer.CreateMessage();
        Log("Received", request.ToString();
        return null;
    }

Результат этой регистрации включает в себя такие вещи, как "ampersand lt;" и какие-то двоичные данные.

Как мне получить что-то, похожее на стандартный мыльный XML-документ? Я знаю, что это должно быть очевидно, но я слишком туп, чтобы понять это.

Спасибо.

Dan

Ответы [ 2 ]

1 голос
/ 11 мая 2017

Вот рабочий пример

public object AfterReceiveRequest(ref Message request, IClientChannel channel, InstanceContext instanceContext)
{
    MessageBuffer buffer = request.CreateBufferedCopy(Int32.MaxValue);
    request = buffer.CreateMessage();

    XDocument doc;

    using (MemoryStream ms = new MemoryStream())
    {
        XmlWriter writer = XmlWriter.Create(ms);
        request.WriteMessage(writer);
        writer.Flush();
        ms.Position = 0;

        doc = XDocument.Load(ms);
    }

    if (SaveLog != null)
    {
        LogSaveFileEventArgs logEventArgs = new LogSaveFileEventArgs(doc, false);
        SaveLog(this, logEventArgs);
    }

    request = buffer.CreateMessage();

    //The return value can be any object that you want to use for correlation purposes;
    //it is returned to you as the correlationState parameter in the BeforeSendReply method.
    return null;
}
1 голос
/ 16 февраля 2010

Существует ли какая-либо конкретная причина, по которой вы не используете встроенную функцию трассировки .Net с выходными данными XmlTextWriter?

Если нет особых причин, взгляните на http://msdn.microsoft.com/en-us/library/ms730064.aspx

Надеюсь, это поможет,

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