【问题标题】:audit wcf service operations calls审核 wcf 服务操作调用
【发布时间】:2013-07-28 01:06:39
【问题描述】:
我有一组与 sql server 数据库交互的 wcf 服务,我想向它添加一些审计,以了解何时调用该服务以及它做了什么。
我相信我有两个选择。
一个。向数据库表添加触发器,在更新、插入等时记录到另一个数据库
湾。向我的 wcf 服务添加一个拦截器,该服务记录对 Mongo 大数据存储数据库的调用以及审计所需的数据
该领域的最佳实践是什么?对于遵循的方法有什么建议?
【问题讨论】:
标签:
sql-server
wcf
mongodb
audit
【解决方案1】:
一个老问题,但我一直在研究一个可能会帮助其他人的库。
使用Audit.Wcf(Audit.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.* 方法来提供您可能需要的任何其他级别的详细信息(例如对数据库的调用)。根据您设置服务的方式,您可能还可以查看一个调试器,该调试器直接插入您的数据库上下文并在它进行调用时输出。