审计wcf服务操作调用

时间:2013-07-28 00:16:42

标签: sql-server wcf mongodb audit

我有一组与sql server数据库交互的wcf服务,我想为它添加一些审计,以查找服务的调用时间和操作。

我相信我有两种选择。

一个。将触发器添加到数据库表,在更新,插入等日志记录到另一个数据库 湾在我的wcf服务中添加一个拦截器,用于记录对Mongo大数据存储数据库的调用以及审计所需的数据

这个领域的最佳做法是什么,以及关于遵循方法的任何建议?

2 个答案:

答案 0 :(得分:0)

作为第一反应,我会尝试启用跟踪。你会惊讶于它们能提供什么样的细节,特别是在诊断方面。它也非常简单,不涉及任何重新编译:

<system.diagnostics>
    <trace autoflush="true" />
    <sources>
            <source name="System.ServiceModel" 
                    switchValue="Information, ActivityTracing"
                    propagateActivity="true">
            <listeners>
               <add name="sdt" 
                   type="System.Diagnostics.XmlWriterTraceListener" 
                   initializeData= "SdrConfigExample.e2e" />
            </listeners>
         </source>
    </sources>
</system.diagnostics>

如果您使用Verbose日志记录,您将获得几乎所有正在进行的事件的调试级日志记录。然后使用SvctraceViewer返回并审核这些日志。

除此之外,请查看使用服务中的Trace.*方法,以提供您可能需要的任何其他详细信息(例如,来自数据库的调用)。根据您设置up服务的方式,您可能还可以查看调试器,该调试器可以直接插入数据库上下文并在进行调用时输出。

答案 1 :(得分:0)

一个老问题,但我一直在研究一个可能对其他人有帮助的图书馆。

使用Audit.WcfAudit.NET的扩展名),您可以记录与WCF服务的交互,并且可以将其配置为使用{{3将审核日志存储在MongoDB数据库中}} extension。

[AuditBehavior] // <-- enable the audit
public class YourService : IServiceContract
{
  public Order GetOrder(int orderId)
  {
    ...
  }
}