2009-05-11 1 views
0

У меня есть веб-службы ASMX, работающие как «сетевое обслуживание». Я хочу, чтобы каждый раз, когда вызывается веб-служба (и когда происходят ошибки), я могу писать в журнал событий.Как я могу написать в журнал пользовательских событий из веб-службы ASMX, работающей как служба сети?

Я создал новый журнал событий (MyLog), используя следующий код работает в качестве администратора на сервере Windows 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.

Я попытался изменить списки управления списком кустов MyLog в реестре (как предложено on MSDN), но безрезультатно.

Я предпочитаю не изменять личность веб-службы и не изменять списки управления доступом в журнале событий приложений, которые используются другими приложениями в системе.

ответ

0

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

Смежные вопросы