Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# FluentNHibernate-无法从输入流(XmlDocument)配置数据存储_C#_Nhibernate_Fluent Nhibernate - Fatal编程技术网

C# FluentNHibernate-无法从输入流(XmlDocument)配置数据存储

C# FluentNHibernate-无法从输入流(XmlDocument)配置数据存储,c#,nhibernate,fluent-nhibernate,C#,Nhibernate,Fluent Nhibernate,我有一个使用FluentNHibernate的传统WCF服务(以及EF和存储过程)。这项服务在一年多的时间里运作良好。最近,我们将apppool回收设置从默认设置更改为每天上午10点进行apppool回收。自从那次更改以来,我的WCF服务至少两次失败,出现以下异常 FluentNHibernate.Cfg.FluentConfigurationException: An invalid or incomplete configuration was used while creating a S

我有一个使用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()
有几件有趣的事要注意

  • 这两次错误都是在apppool回收几秒钟后出现的,这让我相信这与此密切相关
  • 这不会在每次apppool回收后发生
  • 在apppool回收设置为IIS默认值的测试环境中不会发生这种情况
  • 这很难在当地复制。我已经研究了以下关于相同例外情况的问题,但它们处于完全不同的环境中,这些问题的作者一致地得到了例外情况,而这里的情况并非如此


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