我有调用WCF服务的应用程序。出于监视和跟踪目的,我想记录应用程序无法调用服务的所有请求消息。 Loke我需要调用名为RemoveSubscription的操作,一旦失败(可能是网络问题或WCF服务已关闭)我想将SOAP消息记录到xml或txt文件中。
通常可以在代理类中获取SOAP联系请求。
我发现一些信息可以通过扩展SoapExtension类来完成。如果这是如何注册/注入将SoapExtension扩展到通道堆栈的新类的正确方法。
编辑:服务不在IIS中托管它在Windows服务中...所以我是对的,在这种情况下,SoapExtension不是正确的解决方案。
答案 0 :(得分:3)
使用基于WCF的客户端,您可以创建端点行为来拦截请求&回复消息。此TechNet article显示了如何访问正在发送的消息和响应消息。您可以通过在Visual Studio中添加服务引用,使用SvcUtil手动生成客户端代码或使用ChannelFactory类直接在代码中滚动自己的代理来生成WCF客户端。
您的日志记录代码总是会写出请求状态为request的消息和某个数据存储(文件,数据库等)的时间戳。收到响应消息后,它会以某种方式从响应消息中匹配请求消息内容和更新数据存储以更改状态以响应。选择来自数据存储的所有消息,其状态为请求较旧的某个时间段,列出所有失败的消息。