从WCF服务捕获SOAP正文

时间:2012-03-22 12:01:38

标签: .net wcf soap logging

我使用WCF服务和WSDL对象来构建主体。我需要捕获SOAP meassage正文请求/响应。我不需要编辑消息只需要查看或保存/记录它。

我已尝试按此处使用WCF消息记录: http://msdn.microsoft.com/en-us/library/ms730064.aspx

然后使用Microsoft服务跟踪查看器,这只是向我显示标题等,而不管我使用的设置。

还试图使用fiddler,这似乎再次忽略了请求体。

所以......我需要做一些类似于此处概述的内容: How do I get the XML SOAP request of an WCF Web service request?

跟踪查看器看起来很好&我希望我能用这个来捕捉整个信息,包括身体。

对于标准WS服务,我使用了如下所述的监听器: http://blog.encoresystems.net/articles/how-to-capture-soap-envelopes-when-consuming-a-web-service.aspx

这完全符合我的要求,可以通过app.config

打开/关闭

2 个答案:

答案 0 :(得分:1)

我没有使用WCF内置消息记录捕获整个消息的问题。您是否使用自己喜欢的文本编辑器打开了svclog文件并验证了整个消息不是XML格式?看看推荐的部署&调试此MSDN article中的设置以查看如何记录整个邮件。在服务跟踪查看器中,确保选择“消息”视图并在右下方窗格的“消息”或“XML”选项卡中查找整个消息。

答案 1 :(得分:0)

有一种更简单的方法可以做到这一点。 WCF请求和响应对象旨在序列化为XML,因此只需将它们序列化为字符串 - 就像这样。

var requestXml =  SaveAsXmlString(request);

...

public static string SaveAsXmlString<T>(T instance)
{
   var sb = new StringBuilder();
   using (var writer = new StringWriter(sb))
   {
     var serializer = new XmlSerializer(typeof (T));
     serializer.Serialize(writer, instance);
  }
   return sb.ToString();
}
迈克丹尼森