2013-07-28 140 views
2

我有一組與SQL Server數據庫進行交互的WCF服務,我想一些審計添加到它發現當服務被稱爲和它的所作所爲。審計WCF服務操作的調用

我相信,有2個選項向我敞開。

a。將觸發器添加到數據庫表中,該更新,插入等登錄到另一個數據庫b。添加一個攔截器的日誌調用蒙戈提供必要的數據大數據存儲數據庫我的WCF服務的審計

什麼是在這一領域,並作爲一種方法來遵循任何建議,最好的做法?

回答

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服務的方式,你也可以找一個調試器,它可以直接插入你的數據庫上下文,並在打電話時輸出。

0

一個老問題,但我一直工作在一個庫,也許可以幫助別人。

隨着Audit.Wcf(用於Audit.NET擴展),您可以登錄您的WCF服務之間的交互,並且可以配置它使用Audit.MongoDB擴展到MongoDB數據庫的審計日誌存儲。

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