【问题标题】:audit wcf service operations calls审核 wcf 服务操作调用
【发布时间】:2013-07-28 01:06:39
【问题描述】:

我有一组与 sql server 数据库交互的 wcf 服务,我想向它添加一些审计,以了解何时调用该服务以及它做了什么。

我相信我有两个选择。

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

该领域的最佳实践是什么?对于遵循的方法有什么建议?

【问题讨论】:

    标签: sql-server wcf mongodb audit


    【解决方案1】:

    一个老问题,但我一直在研究一个可能会帮助其他人的库。

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

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

    【讨论】:

      【解决方案2】:

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

      <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.* 方法来提供您可能需要的任何其他级别的详细信息(例如对数据库的调用)。根据您设置服务的方式,您可能还可以查看一个调试器,该调试器直接插入您的数据库上下文并在它进行调用时输出。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多