C# IDispatchMessageInspector是否记录纯文本soap消息?
我已经编写了一个WCF IDispatchMessageInspector,所以我可以记录输入和输出消息。但我不知道如何获得一个格式良好的XML字符串来记录 我的代码如下所示: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
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;
}