【问题标题】:FluentNHibernate - Could not configure datastore from input stream (XmlDocument)FluentNHibernate - 无法从输入流 (XmlDocument) 配置数据存储
【发布时间】:2023-03-19 09:50:01
【问题描述】:

我有一个使用 FluentNHibernate 的旧版 WCF 服务(连同 EF 和存储过程)。该服务运行良好一年多。最近我们将 apppool 回收设置从默认更改为每天上午 10 点进行 apppool 回收。自该更改以来,至少两次,我的 WCF 服务因以下异常而失败

FluentNHibernate.Cfg.FluentConfigurationException: An invalid or incomplete configuration was used while creating a SessionFactory. Check PotentialReasons collection, and InnerException for more detail.

 ---> FluentNHibernate.Cfg.FluentConfigurationException: An invalid or incomplete configuration was used while creating a SessionFactory. Check PotentialReasons collection, and InnerException for more detail.

 ---> NHibernate.MappingException: Could not configure datastore from input stream (XmlDocument) ---> System.NullReferenceException: Object reference not set to an instance of an object.
   at NHibernate.Cfg.MappingsQueue.GetNextAvailableResource()
   at NHibernate.Cfg.Configuration.AddInputStream(Stream xmlInputStream, String name)
   --- End of inner exception stack trace ---
   at NHibernate.Cfg.Configuration.LogAndThrow(Exception exception)
   at NHibernate.Cfg.Configuration.AddInputStream(Stream xmlInputStream, String name)
   at NHibernate.Cfg.Configuration.AddDocument(XmlDocument doc, String name)
   at FluentNHibernate.PersistenceModel.Configure(Configuration cfg)
   at FluentNHibernate.Cfg.MappingConfiguration.Apply(Configuration cfg)
   at FluentNHibernate.Cfg.FluentConfiguration.BuildConfiguration()
  --- End of inner exception stack trace ---
  at FluentNHibernate.Cfg.FluentConfiguration.BuildConfiguration()
  at FluentNHibernate.Cfg.FluentConfiguration.BuildSessionFactory()
  --- End of inner exception stack trace ---
  at FluentNHibernate.Cfg.FluentConfiguration.BuildSessionFactory()

需要注意的一些有趣的事情

  1. 两次,错误都在 apppool 回收后几秒钟开始出现,这让我相信这与此密切相关
  2. 每次应用程序池回收后都不会发生这种情况
  3. 这在我们的测试环境中不会发生,其中 apppool 回收设置为 IIS 默认设置

这很难在本地重现。我已经查看了有关相同异常的以下 SO 问题,但它们处于完全不同的上下文中,并且这些问题的作者一直在获得该异常,但此处并非如此

Runtime error when trying to run Fluent NHibernate tutorial example

Fluent nHibernate error - Could not compile the mapping document: (XmlDocument)

【问题讨论】:

    标签: c# nhibernate fluent-nhibernate


    【解决方案1】:

    经过数小时的调查,归结为多个线程试图创建会话工厂的问题。我会认为 NH 会话工厂是线程安全的,但遗憾的是它不是,我不得不放入 int 代码以使其成为线程安全的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-20
      相关资源
      最近更新 更多