Что мне нужно изменить, чтобы приложение IIS7 ASP.Net 3.5 могло создавать источник событий и регистрировать события в Windows EventLog? - PullRequest
32 голосов
/ 13 ноября 2008

ASP.Net 3.5, работающий под IIS 7, кажется, не позволяет этого из коробки.

        if (!EventLog.SourceExists("MyAppLog"))
            EventLog.CreateEventSource("MyAppLog", "Application");

        EventLog myLog = new EventLog();
        myLog.Source = "MyAppLog";
        myLog.WriteEntry("Message");

Ответы [ 3 ]

36 голосов
/ 21 октября 2011

Я скопировал этот ответ из здесь (вопрос был Log4Net, но ответ все еще применяется). Техническая ссылка пропускает важный шаг.

Создать раздел реестра

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\eventlog\Application\MY-AWESOME-APP

Создать строковое значение внутри этого

Назовите его EventMessageFile, установите его значение на

C: \ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ EventLogMessages.dll

Этот путь работает как в 64-битной, так и в 32-битной среде.

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

1024 * В качестве альтернативы *
Если у вас нет большой фермы серверов, но есть небольшой «веб-сад», вы можете запустить консольное приложение на каждом сервере, который создает источник журнала событий, используя EventLog.CreateEventSource, убедитесь, что консольное приложение запускается администратором.

24 голосов
/ 13 ноября 2008

Это часть безопасности Windows начиная с Windows 2003.

Вам необходимо создать запись в реестре в HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ Eventlog \ Application. Убедитесь, что сетевая служба или олицетворенная вами учетная запись имеет разрешение на этот раздел реестра.

@ Ссылка CheGueVerra: Запрошенный доступ к реестру не разрешен

2 голосов
/ 21 января 2016

Щелкните правой кнопкой мыши приложение и выберите «Запуск от имени администратора»

...