Ошибка EventLog в ASP.Net на Win7
У меня есть приложение ASP.Net.net 3.5 SP1, работающее в Win7. Во время процесса входа в систему элемент управления доступом ASP.Net вызывает запись в журнал безопасности (это звучит приемлемо для меня) в журнале событий. Проблема в том, что, похоже, у приложения нет разрешения на это. Ошибка:
Описание. Приложение попыталось выполнить операцию, не разрешенную политикой безопасности. Чтобы предоставить этому приложению требуемые разрешения, обратитесь к своему системному администратору или измените уровень доверия приложения в файле конфигурации.
Исключение. Подробности: System.Security.SecurityException: запрос на разрешение типа "System.Diagnostics.EventLogPermission, System, Version = 2.0.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089" не выполнен.
Трассировка стека не отображает ни одной строки кода из моего приложения, ее все в рамках.
Последние 5 строк: System.Security.CodeAccessSecurityEngine.Check(Object demand, StackCrawlMark & stackMark, Boolean isPermSet) +0 System.Security.CodeAccessPermission.Demand() +61 System.Diagnostics.EventLog..ctor(String logName, String machineName, String source) +125 System.Diagnostics.EventLog..ctor() +24 System.Diagnostics.EventLog.WriteEntry(String source, String message, EventLogEntryType type, Int32 eventID, Int16 category, Byte [] rawData) +52
Это же приложение отлично работает на XP SP2. Я охотился вокруг и не могу найти, как давать разрешения. Я попытался запустить hte app pool как LocalSystem и ApplicationPoolIdentity.
Какой самый простой способ получить это? Его моя локальная машина-разработчик, и мне все равно, открываю ли я дыры в безопасности, пока мне не нужно изменять код (т.е. Мне нужно, чтобы решение было изменением INETMGR или web.config или некоторыми локальными разрешениями и т.д.).
Спасибо!
Ответы
Ответ 1
Этот ссылка, чтобы обсудить проблему, с которой вы сталкиваетесь.
Я не уверен в различиях между CAS по умолчанию (безопасность доступа к коду) в XP против win 7, однако запись в журнале событий (и всех вызывающих сборках) должна иметь EventLogPermission.
Вы можете добавить атрибут AllowPartiallyTrustedCallers или подписать сборку с сильный ключевой ключ.
Ответ 2
Если вы пишете в журнале приложений по умолчанию, вам необходимо предоставить разрешению LocalSystem перед его использованием в пуле приложений.
Откройте RegistryEdit и перейдите
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\services\eventlog\Application
RightClick над аппликацией и разрешениями на клики
![введите описание изображения здесь]()
Если пользователь (LOCALSYSTEM) отсутствует в списке, Добавить и Разрешить полный контроль