Ошибка 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) отсутствует в списке, Добавить и Разрешить полный контроль