0

我有一个项目,完全设置并使用 nHibernate 成功测试,我试图在 Visual Studio 2010 的调试模式下运行。在设置 log4net 之前运行项目显然运行良好,但添加对 log4net 程序集的引用,适当的行int web\Global.Asax文件,而web.config文件中的配置参数导致如下错误

覆盖成员时违反了继承安全规则:'log4net.Util.ReadOnlyPropertiesDictionary.GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)'。重写方法的安全可访问性必须与被重写方法的安全可访问性相匹配。

在线

配置配置 = new Configuration().Configure();

在下面的代码块中

public static ISessionFactory SessionFactory;
    public static ISession OpenSession()
    {
        if (SessionFactory == null) //not threadsafe
        { //SessionFactories are expensive, create only once
            Configuration configuration = new Configuration().Configure();
            configuration.AddAssembly(Assembly.GetCallingAssembly());
            SessionFactory = configuration.BuildSessionFactory();
        }
        return SessionFactory.OpenSession();
    }

我明确遵循本指南:Configure Log4Net for use with NHibernate from the nHibernate project。

4

2 回答 2

2

您需要在 log4net 源中添加SecurityCritical属性,详见https://stackoverflow.com/a/2977020/43846Util.ReadOnlyPropertiesDictionary.GetObjectData

于 2012-11-29T18:14:26.977 回答
0

您应该下载 log4net 的 1.2.11 版本。它包括一个针对 .NET 4.0 的程序集,其中包含更多固定属性,而不仅仅是一个属性。

于 2012-11-30T06:55:10.003 回答