Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# IDispatchMessageInspector是否记录纯文本soap消息?_C#_Xml_Wcf_Soap - Fatal编程技术网

C# IDispatchMessageInspector是否记录纯文本soap消息?

C# IDispatchMessageInspector是否记录纯文本soap消息?,c#,xml,wcf,soap,C#,Xml,Wcf,Soap,我已经编写了一个WCF IDispatchMessageInspector,所以我可以记录输入和输出消息。但我不知道如何获得一个格式良好的XML字符串来记录 我的代码如下所示: public object AfterReceiveRequest(ref Message request, IClientChannel channel, InstanceContext instanceContext) { MessageBuffer buffer = requ

我已经编写了一个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”之类的内容,以及某种二进制编码的数据

如何获得类似于标准soapxml文档的内容?我知道这应该是显而易见的,但我实在是太难理解了

谢谢


Dan

您没有将.Net内置跟踪功能与XmlTextWriter输出一起使用,有什么具体原因吗

如果没有具体原因,请查看


希望这能有所帮助,

这里是一个工作示例

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;
}