Что мне нужно изменить, чтобы приложение 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
Щелкните правой кнопкой мыши приложение и выберите "Запуск от имени администратора"