我有一个项目,使用nHibernate成功完成设置和测试,我试图在Visual Studio 2010的调试模式下运行。在设置log4net之前运行项目显然运行良好,但添加对log4net程序集的引用,适当的行int web \ Global.Asax文件,以及web.config文件中的配置参数导致以下错误
覆盖成员时违反了继承安全规则:'log4net.Util.ReadOnlyPropertiesDictionary.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)'。覆盖方法的安全性可访问性必须与要覆盖的方法的安全性可访问性相匹配。
在第
行配置配置=新配置()。配置();
在以下代码块中
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();
}
我明确遵循本指南:来自nHibernate项目的Configure Log4Net for use with NHibernate。
答案 0 :(得分:2)
您需要在SecurityCritical
中添加Util.ReadOnlyPropertiesDictionary.GetObjectData
{{1}}来自https://stackoverflow.com/a/2977020/43846
答案 1 :(得分:0)
您应该下载log4net的1.2.11版。它包括一个针对.NET 4.0的程序集,它包含许多固定而不仅仅是那个属性。