У меня есть веб-сервисы ASMX, работающие как «сетевой сервис». Я хочу иметь возможность записи в пользовательский журнал событий при каждом вызове веб-службы (и при возникновении ошибок).
Я создал новый журнал событий (MyLog), используя следующий код, работающий от имени администратора на компьютере с Windows Server 2008:
if (!EventLog.SourceExists(APPLICATIONNAME))
{
EventLog.CreateEventSource(APPLICATIONNAME, EVENTLOGNAME);
}
EventLog.WriteEntry(APPLICATIONNAME, "Service started", EventLogEntryType.Information);
, где APPLICATIONAME - "MyApp", а EVENTLOGNAME - "MyLog" (имена изменены для защиты невинных).
Во-первых, он создает новый журнал событий «MyLog» (проверяется с помощью eventvwr), но его содержимое совпадает с журналом событий приложения. Я ожидал получить пустой, не связанный журнал событий.
Во-вторых, когда я пытаюсь записать во вновь созданный журнал событий из метода Application_Start, используя следующий код:
EventLog.WriteEntry(APPLICATIONNAME, "Service started", EventLogEntryType.Information);
Я получаю SecurityException типа System.Diagnostics.EventLogPermission .
Я пытался изменить ACL-списки куста «MyLog» в реестре (как было предложено на MSDN ), но безрезультатно.
Я бы предпочел не изменять идентификацию веб-службы и не изменять списки ACL в журнале событий приложений, который используется другими приложениями в системе.