2

所以我正在使用 SLAB 并且我有一个数据库侦听器注销到数据库。我正在事件源上使用单一方法进行测试。我遇到的问题是日志正按我的意愿插入到数据库中,但我在每个条目之前都会收到一个异常日志

在此处输入图像描述 在我的输出窗口中,它说的完全一样,“EventSourceException”。我很难弄清楚异常是什么,更不用说如何修复它了。

这是事件源方法:

[Event(2, Message = "ACCESS_ADMIN",
    Level = EventLevel.LogAlways,
    Keywords = Keywords.AdminAccess)]
public void LogAdminAccess(string userInfo, string resource, string clientIpAddress, bool succeeded)
{
    SetCurrentThreadActivityId(GetNewActivityId());
    WriteEventWithRelatedActivityId(2, GetRequestId(), userInfo, resource, clientIpAddress, succeeded);
}

这是监听器的初始化方式,inproc:

var dbSemanticLogListener = SqlDatabaseLog.CreateListener(
    "MyComponent",
    PayliteRegistry.MainDatabaseConnectionString);

dbSemanticLogListener.EnableEvents(
   AprivaPciAuditEventSource.Log,
   EventLevel.LogAlways, 
    MyEnum.Keywords.AccountModified |
    MyEnum.Keywords.AdminAccess |
    MyEnum.Keywords.DatabaseAccess |
    MyEnum.Keywords.ApplicationStateChange);

以及对记录器的调用:

MyLoggerClass.Log.LogAdminAccess(
    userInfo, 
    request.RequestUri.AbsolutePath, 
    request.GetClientIpAddress(), 
    true);

关于问题可能是什么或至少如何获得引发的实际异常的任何想法?

未显示的其他位

  • 这个 EventSource 类是密封的
  • 我已经逐步完成并验证了这些方法GetNewActivityId()并且GetRequestId()没有抛出异常
  • 执行时异常显示在输出窗口中,WriteEventWithRelatedActivityId(...但异常没有冒泡;它似乎在基类中处理。
4

1 回答 1

3

事实证明,

  • 我正在将相关活动 ID 用于其他目的
  • 为了使其工作,您必须在事件属性中指定一个 EventOpCode。
于 2015-09-21T23:15:49.280 回答