Log4Net и .NET 4.0 RC - PullRequest
       55

Log4Net и .NET 4.0 RC

27 голосов
/ 17 февраля 2010

Я попытался скомпилировать проект, зависящий от среды ведения журнала Log4Net, с помощью .NET 4.0 RC и столкнулся с некоторыми проблемами.

Из коробки (просто изменив цель на .NET 4.0) он больше не работает, выдается исключение безопасности.

Нарушение правил безопасности наследования при переопределении члена: «Log4net.Util.ReadOnlyPropertiesDictionary.GetObjectData (System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext). Безопасная доступность переопределяющий метод должен соответствовать безопасная доступность метода будучи

Это было решено добавлением следующей строки в сборку log4net (в AssemblyInfo.cs):

[assembly: System.Security.SecurityRules(System.Security.SecurityRuleSet.Level1)]

Может кто-нибудь объяснить, почему это требуется, и есть ли альтернативы этому? Это связано с тем, как пишется Log4Net или как-то еще?

Ответы [ 2 ]

22 голосов
/ 17 февраля 2010

Это необходимо, потому что .NET 4.0 добавил Уровень 2 Прозрачный код безопасности (что является новым значением по умолчанию) и покончил с Code Access Security . Уровень 1 Прозрачный код безопасности все еще существует для совместимости, но, как вы обнаружили, должен быть указан.

Вы правы, что это связано с тем, как написана Log4Net. В действительности, нет альтернативы решению, которое вы нашли, кроме как обновить код Log4Net или переключиться на другое решение для ведения журнала:)

1 голос
/ 07 августа 2013

Эта ошибка известна как https://issues.apache.org/jira/browse/LOG4NET-347 и, похоже, она исправлена.

...