Так что я использую SLAB, и у меня есть прослушиватель базы данных, выходящий из базы данных. Я тестирую один метод в источнике событий. Проблема, с которой я столкнулся, заключается в том, что журнал вставляется в базу данных так же, как я хочу, но я также получаю журнал регистрации перед каждой записью.«EventSourceException» без каких-либо подробностей о каждом журнале, но сам журнал по-прежнему приходит через
В моем окне вывода указано, что именно то же самое, «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(...
, но исключение не пузырится; он, по-видимому, обрабатывается в базовом классе.
Вы нашли основную причину этой проблемы? Не могу сказать точно, но кажется, что я начал иметь ту же проблему при вызове WriteEventWithRelatedActivityId после установки новой среды выполнения. – Refraction
Основной причиной было то, что я не использовал его правильно. Связанный идентификатор активности предназначен для привязки * потоков * к их родительским потокам. Но если вы собираетесь использовать его вообще, вы должны указать EventOpCode. Просто указав, что заставил его работать на меня. – Sinaesthetic
Благодарим за сообщение. Все наши события отмечены этим атрибутом. Я попытался воспроизвести проблему, которая у меня есть на машине с 4.5 runtime - все в порядке. Похоже, что это вызвано 4.6 – Refraction