我使用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
打开/关闭答案 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();
}
迈克丹尼森