'的类型初始值设定项;NHibernate.Cfg.Configuration';抛出异常

'的类型初始值设定项;NHibernate.Cfg.Configuration';抛出异常,nhibernate,Nhibernate,从nhibernate 1.0.4.0升级到nhibernate 3.3后,我在尝试运行“Configuration cfg=new Configuration();”时遇到以下错误 任何帮助都将不胜感激 NHibernateUtil类别代码如下: public class NHibernateUtil { private static readonly Configuration cfg; private static readonly ISession

从nhibernate 1.0.4.0升级到nhibernate 3.3后,我在尝试运行“Configuration cfg=new Configuration();”时遇到以下错误

任何帮助都将不胜感激

NHibernateUtil类别代码如下:

public class NHibernateUtil
    {
        private static readonly Configuration cfg;
        private static readonly ISessionFactory sessionFactory;
        private static readonly ILog logger = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);

        static NHibernateUtil()
        {
            try
            {
                logger.Debug("Before Initializing NHibernate");
                cfg  = new Configuration();
                cfg.AddAssembly("KEH.Web.Data");
                sessionFactory = cfg.BuildSessionFactory();
                logger.Debug("Initialized NHibernate");
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }

        public static ISession OpenSession()
        {
            logger.Debug("Before Getting Connection");
            return sessionFactory.OpenSession();
        }
}

我不知道为什么它不起作用,但我想换一个

cfg.AddAssembly("KEH.Web.Data");

其中Entity是映射文件程序集中存在的某个类。

我也遇到了同样的问题。 实际原因是我使用了一个使用旧版本log4net的库。 如果找到,NHibernate会尝试使用它。 因此,我不得不通过添加以下行来强制它使用(或实际上不使用)其他记录器:
SetLoggersFactory(新的NoLoggingLoggerFactory())

为了其他可能通过谷歌找到这个问题的人:

对我们来说,这一错误只是一个转移视线的问题。我们的应用程序运行良好,直到我们部署了一个新组件,它将失败(以未知的方式),IIS将回收应用程序池。问题是我们使用的HTML到JPG组件不知何故出错,导致所有w3wp.exe工作进程消耗最大CPU。当通过IIS回收应用程序池时,整个站点将关闭,NHibernate将持续抛出此错误,直到IIS设置。在回收之前,即使有CPU负载,该站点仍然会有很强的响应能力

虽然我们仍然不知道该组件是如何出现故障的,或者为什么它会导致NHibernate初始化出现问题,但关键是这只是一个转移视线的问题。请确保在新部署后不久会“突然”发生此错误,并记录CPU利用率,以便在出现问题时提供帮助。最后,如果停机时间几乎每天都在同一时间发生,那么这可能是IIS应用程序池的自动回收,这应该是另一个线索,表明您的应用程序正在被窃听,并在回收过程中出现问题

最终,我们禁用了HTML-to-JPG组件,直到找到解决方案,我们的启动时间恢复到100%


希望这对某人有所帮助。

请向我们展示您在
NHibernateUtil.cs:line 24上的资料。这不是NHibernate文件,这是你自己的项目之一。TypeInitializer异常是因为该异常是从(静态)构造函数引发的。通常最好避免从构造函数引发异常。log4net程序集是否输出到应用程序的bin文件夹?是的,我在bin文件夹中有log4net程序集看起来好像有调用在生成的程序集中获取记录器。你在某处使用reflection.emit吗?是的,我也有同样的问题。我有log4net版本1.2.9.0。在升级到1.2.11.0之后,问题就消失了。谢谢,直到我看到这一点,我才明白这一点。
cfg.AddAssembly("KEH.Web.Data");
cfg.AddAssembly(typeof(Entity).Assembly);