Я провел день, пытаясь сделать Lib Ent, Регистрирующий работу и зарегистрировать что-либо в журнал транзакций базы данных или журнал событий. У меня есть веб-приложение и консольное приложение с той же конфигурацией Lib Ent, но только консольное приложение способно для вхождения в журнал событий. Я попробовал все полномочиями, но я не знаю то, что точно я делаю — который сервисы должны иметь что. Это не работает!
Я прочитал статьи как этот http://imar.spaanjaars.com/275/logging-errors-to-the-event-log-in-aspnet-applications, и я хочу попытаться сделать отчет ASPNET те полномочия. Я использую Windows 7, и я не могу найти учетную запись пользователя ASPNET. Таким образом, где это?
Это - файл конфигурации, который автоматически сгенерирован от утилиты Ent Lib, и это работает только над App.config, не над web.config
Я считаю, что под IIS7 (который, как я предполагаю, вы используете) пул приложений будет работать под СЕТЕВОЙ СЛУЖБОЙ .
Вы можете попробовать предоставить СЕТЕВОЙ СЛУЖБЕ полный доступ к разделу реестра HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ Eventlog \ Application
.
(Не рекомендуется!)
В качестве альтернативы вы можете предоставить КАЖДОМУ полный доступ к HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ Eventlog \ Application
, зарегистрировать сообщение и отменить это изменение. После настройки ключа вам не потребуются разрешения на запись в реестр.
Или вы можете вручную настроить ключи реестра, которые вам требуются заранее, чтобы избежать проблем с разрешениями:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application\Logger]
"EventMessageFile"="c:\\WINNT\\Microsoft.NET\\Framework\\v2.0.50727\\EventLogMessages.dll"
Просто обновление этого ответа, согласно MSDN : «Чтобы создать источник событий в Windows Vista и более поздних версий или Windows Server 2003, у вас должны быть права администратора ».
Я использую сценарий PowerShell для создания соответствующего источника ...
$source = "FoToIaW"
if ([System.Diagnostics.EventLog]::SourceExists($source) -eq $false)
{
[System.Diagnostics.EventLog]::CreateEventSource($source, "Application")
}