Как я могу записать в пользовательский журнал событий мой веб-сервис ASMX, работающий как сетевой сервис? - PullRequest
0 голосов
/ 12 мая 2009

У меня есть веб-сервисы 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 в журнале событий приложений, который используется другими приложениями в системе.

1 Ответ

0 голосов
/ 16 июня 2009

Поскольку моя веб-служба работает в контексте SharePoint, я просто обернул вызов EventLog.WriteEntry в SPSecurity.RunWithElevatedPrivileges .

...