log4net – Агенты не работают в IIS7.5

Я могу писать в файл журнала с помощью сервера log4net и Cassini / IIS dev, но когда я использую IIS7.5, я не могу записать файл.

Первоначально я получил исключение безопасности, поэтому я добавил requirePermission="false" и исключение requirePermission="false" но файл не был создан.

Уровень доверия заполнен в соответствии с IISM.

Я не могу заставить это работать на моей собственной машине, мне интересно, что произойдет, когда я перейду на ISP (discountASP).

Вот настройка log4net:

  

C #

 log4net.Config.XmlConfigurator.Configure(); ILog Log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); Log.Info("This is a test"); 

Любые подсказки?

ASP.NET 3.5, VS2008, Windows 7, IIS7.5, log4net 1.2.10

РЕДАКТИРОВАТЬ:

Я использовал тестовое веб-приложение, которое запускалось в Cassini и запускало его в IIS7.5, и оно работало так, что есть что-то особенное для моего веб-приложения, которое предотвращает запуск log4net. В нем много, ELMAH, кэширование выходных данных, AJAX Control Toolkit, проверка подлинности, ssl, переписывание URL и т. Д. Помимо добавления каждого из них в тестовое приложение, есть лучший способ выяснить, что вызывает log4net работать?

ОБНОВИТЬ:

Я использовал AdoNetAppender, чтобы держаться подальше от проблем с разрешением файла, и я все равно получаю тот же результат. AdoNetAppender работает для тестового приложения, работающего на Cassini и IIS, но он не работает в моем веб-приложении. Получение следующего исключения:

System.Security.SecurityException: запрос на разрешение типа «System.Configuration.ConfigurationPermission, System.Configuration …» не выполнен.

ОБНОВЛЕНИЕ 2: Я ошибся, что тестовый файл webapp fileAppender работал в IIS7.5. Вот что происходит: тестовый файл webappAppender и AdoDotNetAppender работают в Cassini / IIS dev, но не в IIS7.5. Поэтому я думаю, что это проблема IIS, а не мой webapp.

Заметка. Я запускаю VS2008 в качестве администратора, но вошел в Windows 7 как nonAdmin. Кроме того, я запускаю Windows 7 Home Premium, а не Professional.

Я предоставил NETWORK SERVICE полное разрешение на использование корневого каталога в сети и все еще не создал файл. Также дал ВСЕЕ полное разрешение, без файла.

Поскольку adoDotNetAppender тоже не работал (но это было в dev IIS), я думаю, что в дополнение к разрешениям файла может возникнуть другая проблема.

ОБНОВЛЕНИЕ 3:

Я получил его для работы с FileAppender на IIS7. Если я добавлю это:

  

и если пользователь является администратором, он работает. Если это я, а не админ, это не так. Так что это проблема с разрешениями. Но я действительно предоставлял права EVERYONE каталогу, в который файл записывался раньше, и он не работал, поэтому в настройках разрешений есть другое. Кроме того, хотя FileAppender теперь работает с олицетворением, AdoNetAppender stil не работает в IIS7. Я попытался добавить:

      

в раздел AdoNetAppender, но все равно сбой.

Я добавил щедрость для всех, кто может помочь мне получить AdoNetAppender, работающий с IIS7.5.

ОБНОВЛЕНИЕ 4:

Наконец-то я ухватился за трассировку стека. Вот:

 log4net:ERROR [AdoNetAppender] Failed in DoAppend System.Security.SecurityException: Request for the permission of type 'System.Security.Permissions.SecurityPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed. at log4net.Util.LogicalThreadContextProperties.GetProperties(Boolean create) at log4net.Core.LoggingEvent.CreateCompositeProperties() at log4net.Core.LoggingEvent.CacheProperties() at log4net.Core.LoggingEvent.FixVolatileData(FixFlags flags) at log4net.Core.LoggingEvent.set_Fix(FixFlags value) at log4net.Appender.BufferingAppenderSkeleton.Append(LoggingEvent loggingEvent) at log4net.Appender.AppenderSkeleton.DoAppend(LoggingEvent loggingEvent) The action that failed was: LinkDemand The type of the first permission that failed was: System.Security.Permissions.SecurityPermission The Zone of the assembly that failed was: MyComputer 

У меня был SQL Profiler и ничего не делалось с SQL Server. Кроме того, учетная запись SQL Server имеет правильные привилегии для вставки. Кроме того, я удалил раздел SecurityContext, поскольку log4net не распознал его часть.

Вы можете включить внутреннюю отладку log4net, добавив ключ log4net.Internal.Debug в файл конфигурации приложения.

    

Это будет записывать отладочные сообщения на консоль и систему System.Diagnostics.Trace . Затем вы можете зарегистрировать эти сообщения в текстовом файле, добавив в свой конфигурационный файл прослушиватель трассировки. Убедитесь, что приложение имеет разрешение на запись в файл.

        

В качестве альтернативы сообщения трассировки также записываются в системный отладчик, поэтому вы можете использовать утилиту вроде DebugView для захвата сообщений. Дополнительную информацию см. В часто задаваемых параметрах log4Net .

Я, наконец, получил его работу, я добавил

  

to system.web.

С помощью среды AdoNetAppender перестает работать, но FileAppender все еще работает для средних и высоких.

Используйте такой инструмент, как Process Monitor и шпион по процессу IIS. Я подозреваю, что он пытается создать файл журнала в каталоге, к которому у учетной записи IIS нет доступа.

Следуя этому тесту, укажите абсолютный путь к файлу журнала, который, как вы знаете, имеет доступ к процессу IIS.

Заходите ли вы в Windows Explorer и проверяете правильных пользователей (NETWORK SERVICE?), У которых есть права на запись?

У меня была такая же проблема. Я решил это, изменив конфигурацию IIS 7. Довольно легко …

Перейдите к дополнительным настройкам пула приложений и установите «Загрузить профиль пользователя» в true! Затем убедитесь, что IUSR (пользователь IIS) имеет разрешение на запись в путь к журналам.

Кроме того, как правило, я добавляю поддержку 32-битных приложений, это полезно при загрузке и использовании сборок от третьих сторон, где вы не знаете, были ли они выполнены для 32, 64 или независимых.

Я нашел это, прочитав эту статью: http://learn.iis.net/page.aspx/624/application-pool-identities/

С наилучшими пожеланиями, Тьяго.

Попробуйте предоставить пользователю IIS AppPool \ DefaultAppPool полное разрешение на каталог журнала. Это помогло мне хотя бы раз.

  • Как принудительно использовать компилятор C ++ для использования конкретной версии CRT?
  • Общий базовый class для WinForm UserControl
  • в visual studio 2010 или 2008
  • GCC с Visual Studio?
  • C # - выборочное подавление пользовательских устаревших предупреждений
  • загрузчик объектов в opengl
  • Как обнаружить, если я компилирую код с Visual Studio 2008?
  • отладочная информация не может быть найдена или не соответствует визуальной студии
  • Приложение не работает с DLL VS 2008 SP1, предыдущая версия работает с версиями RTM
  • Добавить библиотеку в Visual Studio 2008 C ++ Project
  • Как отключить ReSharper в Visual Studio и включить его снова?
  • Interesting Posts

    IE 10 сбой при загрузке файла при использовании EMET

    Сохраните программу, запущенную после закрытия консоли, после запуска программы

    Проверка того, является ли объект числом в C #

    Постоянно проверяя, коснулась ли пуля узла

    mvn release: подготовить не совершать изменений в pom.xml

    Изменение середины селектора в Sass (добавление / удаление classов и т. Д.)

    Cordova + Angularjs + Устройство готово

    ExpireTimeSpan игнорируется после регенерацииIdentity / validateInterval длительность в MVC Identity (2.0.1)

    Заменить символические ссылки с файлами

    Показывать элементы управления, добавленные программно в приложении WinForms в представлении «Дизайн»?

    Доступ к клавишам dict, как атрибут?

    Grub: как загрузиться в раздел ISO

    переместить компонент после перетаскивания

    У вас есть надстройка для Firefox, например NoScript, но для файлов cookie (что позволяет сделать белый список во время просмотра в Интернете)?

    Почему вложенные изображения Outlook 2007 больше оригинала?

    Давайте будем гением компьютера.