Log4Net和.NET 4.0 RC

27

我尝试使用.NET 4.0 RC编译一个依赖于Log4Net日志框架的项目,但遇到了一些问题。

只是将目标更改为.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

这是必需的,因为.NET 4.0添加了二级安全透明代码(这是新的默认设置),并放弃了代码访问安全性一级安全透明代码仍然存在于兼容性中,但正如您所发现的那样,必须指定。

您的观点是正确的,这与Log4Net的编写方式有关。除了更新Log4Net代码或切换到其他日志记录解决方案,实际上没有其他替代方案 :)


1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接