我尝试使用.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的编写方式或其他内容有关吗?
答案 0 :(得分:22)
这是必需的,因为.NET 4.0添加了Level 2 Security-Transparent Code(这是新的默认设置)并取消了Code Access Security。 <{3}}仍然存在兼容性,但正如您所发现的那样,必须指定。
你是正确的,它与Log4Net的编写方式有关。 除了更新Log4Net代码 - 或切换到不同的日志记录解决方案之外,除了找到的解决方案之外别无选择:)
答案 1 :(得分:1)