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

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

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

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

Ответ 1

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

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

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

Ответ 2

Я скопировал этот ответ из здесь (вопрос был 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-разрядной среде.

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

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

Ответ 3

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