Проблема в доступе / записи в EventLog
Я работаю со старым кодом (и, честно говоря, я не знаю половину того, что он делает), пытаясь перенести его на IIS7.
Одна из проблем, которые я вижу, состоит в том, что я получаю эту ошибку:
[SecurityException: источник не был найден, но не удалось найти некоторые или все журналы событий. Недоступные журналы: безопасность.]
Если я захожу вручную в HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\Security и задаю разрешение этого ключа (Безопасность), чтобы "Все" имели полный доступ, это не проблема. Но очевидно, что это не оптимальное решение.
Кто-нибудь знает лучший способ удалить это исключение?
2 ответа
Один из способов исправить это - запустить простое консольное приложение с полным доверием, которое записывает одну запись EventLog под именем источника, вызывающего проблемы. Вам придется сделать это один раз для каждого сервера.
С этого момента вы сможете войти под этим именем источника. (по крайней мере, это мое наблюдение.) Это просто создание неизвестного источника, который вы не можете сделать из-под ASP.NET, вход в существующий источник не должен быть проблемой.
Вопрос в том, знаете ли вы имя источника? Если вы этого не сделаете, временно предоставив доступ всем, дождитесь сообщения журнала, и удаление всех также должно работать.
Официальный способ Microsoft - создать установщик, который регистрирует источник журнала событий.
Из этой темы:
Метод EventLog.CreateEventSource() пытается выполнить поиск источников событий во всех журналах событий, а не только в журнале событий, для которого вы хотите создать источник. Есть два решения для этого. Первый, самый простой и самый небезопасный, - просто предоставить доступ на чтение / запись ко всем журналам событий для учетной записи ASP.NET.
Код и другие решения также предоставляются.