2012-03-22 45 views
2

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

我已经使用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

这个工程完全按照我wan't,可以开/关通过的app.config

+0

请出示您的留言日志配置。获取消息内容是完全可能的。尝试使用WCF配置编辑器工具编辑您的配置。 – 2012-03-22 13:52:23

+0

感谢你们俩......只是需要确定它是可能的。仅在System.ServiceModel上运行跟踪,而不是在System.ServiceModel.MessageLogging上运行 – baileyswalk 2012-03-22 15:40:53

回答

1

我的避风港”切换t使用WCF内置消息日志记录捕获整个消息时出现问题。你有没有使用你最喜欢的文本编辑器打开svclog文件,并验证整个消息不是XML?查看MSDN article中调试设置的建议部署&,以了解如何记录整个消息。在服务跟踪查看器中,确保选择消息视图并在右下方的窗格消息或XML选项卡中查找整个消息。

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

迈克·丹尼森