Что мне нужно изменить, чтобы приложение 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");
3 ответа
Это часть безопасности Windows начиная с Windows 2003.
Вам необходимо создать запись в реестре по адресу HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application. Убедитесь, что сетевая служба или олицетворенная вами учетная запись имеет разрешение на этот раздел реестра.
Ссылка @CheGueVerra: Запрашиваемый доступ к реестру не разрешен
Я скопировал этот ответ отсюда (вопрос был 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
Убедитесь, что консольное приложение запущено администратором.
Щелкните правой кнопкой мыши приложение и выберите "Запуск от имени администратора".