如果不使用数据提供程序,则缺少新对象-Audit.Net

时间:2019-01-08 09:39:37

标签: c# audit.net

我注意到AuditScope获得了.Event属性,其中包含事件日志的值。因此可以使用此命令将其转换为json

var Scope = AuditScope.Create("Account:Suspend", () => user);

//Change value properties on user object
//Save into database

//Retrieve eventlog from audit
var EventInJson = Scope.Event.ToJson();

所以我决定不使用CustomDataProvider,所以我这样配置Audit.Net

Audit.Core.Configuration.Setup();

但是New Object中缺少Target Object。样本结果

{ "EventType": "Account:Suspend", "Environment": { "UserName": "test", "MachineName": "test", "DomainName": "test", "CallingMethodName": "Account.API.Controllers.AccountController+<UpdateSuspend>d__35.MoveNext()", "AssemblyName": "Account.API, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null", "Culture": "en-MY" }, "Target": { "Type": "ApplicationUser", "Old": { "CountryId": 1, "IsDeleted": false, "IsSuspend": true, "RiskLevelId": 0, "CreationDate": "2018-10-05T04:51:32.485", "LastLoginDate": "2018-10-05T04:51:32.486", "Id": 23, "UserName": "user", "NormalizedUserName": "test", "Email": "test@test.com", "NormalizedEmail": "test@test.com", "EmailConfirmed": false, "SecurityStamp": "Test", "ConcurrencyStamp": "test", "PhoneNumberConfirmed": false, "TwoFactorEnabled": false, "LockoutEnd": "2018-12-18T04:15:56.2490628+00:00", "LockoutEnabled": false, "AccessFailedCount": 0 } }, "StartDate": "2019-01-08T09:35:34.8363926Z", "Duration": 0 }

可以在没有数据提供者的情况下使用吗?

1 个答案:

答案 0 :(得分:1)

缺少New值,因为它是在已保存范围时更新的,具体取决于创建策略,在处置范围或明确调用{{ Save上的1}}方法。因此,在修改目标对象之后以及获取审计事件之前,必须处置范围或调用其AuditScope方法。

还要注意,像这样的Save调用不足以具有NULL数据提供程序,该代码将仅使用默认值Audit.Core.Configuration.Setup();。为了指定NULL数据提供者,您可以执行FileDataProvider