Nhibernate错误:BuildSessionFactory()死锁/断开连接

Nhibernate错误:BuildSessionFactory()死锁/断开连接,nhibernate,sessionfactory,Nhibernate,Sessionfactory,下午好 我已经在这个问题上纠缠了好几天了,我觉得我对Nhibernate/SQL Server的理解还不够,我可能无法解决这个问题 问题在于,任何涉及调用以下各项的单元测试: Nhibernate.Cfg.Configuaration.BuildSessionFactory(); 当我被困在运行状态时,我被迫按下“停止”键以使NUnit做出响应。此时会出现错误对话框,其中包含以下信息: “无法建立连接,因为目标计算机主动拒绝了它” “例外文本”为 我的NHibernate是这样配置的 <

下午好

我已经在这个问题上纠缠了好几天了,我觉得我对Nhibernate/SQL Server的理解还不够,我可能无法解决这个问题

问题在于,任何涉及调用以下各项的单元测试:

Nhibernate.Cfg.Configuaration.BuildSessionFactory();
当我被困在运行状态时,我被迫按下“停止”键以使NUnit做出响应。此时会出现错误对话框,其中包含以下信息:

“无法建立连接,因为目标计算机主动拒绝了它”

“例外文本”为

我的NHibernate是这样配置的

<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
  <session-factory>
    <property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
    <property name="dialect">NHibernate.Dialect.MsSql2008Dialect</property>
    <property name="connection.driver_class">NHibernate.Driver.SqlClientDriver</property>
    <property name="connection.connection_string">Server=MachineName\SQLEXPRESS;database=TestingDB;Integrated Security=true;</property>
    <property name ="proxyfactory.factory_class">NHibernate.ByteCode.LinFu.ProxyFactoryFactory, Nhibernate.ByteCode.LinFu</property>
    <property name="show_sql">true</property>
  </session-factory>
</hibernate-configuration>
测试只是挂在最后一行。为了试着理解出了什么问题,我启用了log4net,它在运行测试时给出了以下输出

[TestRunnerThread] INFO  NHibernate.Cfg.Environment - NHibernate 2.1.2.4000 (2.1.2.4000)
[TestRunnerThread] INFO  NHibernate.Cfg.Environment - hibernate-configuration section not found in application configuration file
[TestRunnerThread] INFO  NHibernate.Cfg.Environment - Bytecode provider name : lcg
[TestRunnerThread] INFO  NHibernate.Cfg.Environment - Using reflection optimizer
[TestRunnerThread] DEBUG NHibernate.Cfg.Configuration - connection.provider=NHibernate.Connection.DriverConnectionProvider
[TestRunnerThread] DEBUG NHibernate.Cfg.Configuration - dialect=NHibernate.Dialect.MsSql2008Dialect
[TestRunnerThread] DEBUG NHibernate.Cfg.Configuration - connection.driver_class=NHibernate.Driver.SqlClientDriver
[TestRunnerThread] DEBUG NHibernate.Cfg.Configuration - connection.connection_string=Server=MachineName\SQLEXPRESS;database=MySolution_Testing;Integrated Security=true;
[TestRunnerThread] DEBUG NHibernate.Cfg.Configuration - proxyfactory.factory_class=NHibernate.ByteCode.LinFu.ProxyFactoryFactory, Nhibernate.ByteCode.LinFu
[TestRunnerThread] DEBUG NHibernate.Cfg.Configuration - show_sql=true
[TestRunnerThread] DEBUG NHibernate.Cfg.Configuration - properties: System.Collections.Generic.Dictionary`2[System.String,System.String]
[TestRunnerThread] INFO  NHibernate.Cfg.Configuration - Mapping resource: MySolution.Models.Mappings.MenuItem.hbm.xml
[TestRunnerThread] INFO  NHibernate.Dialect.Dialect - Using dialect: NHibernate.Dialect.MsSql2008Dialect
[TestRunnerThread] INFO  NHibernate.Cfg.XmlHbmBinding.Binder - Mapping class: MySolution.Models.MenuItem -> MenuItems
[TestRunnerThread] DEBUG NHibernate.Cfg.XmlHbmBinding.Binder - Mapped property: ID -> MenuItemID, type: Int32
[TestRunnerThread] DEBUG NHibernate.Cfg.XmlHbmBinding.Binder - Mapped property: Name -> MenuItemName, type: String
[TestRunnerThread] DEBUG NHibernate.Cfg.XmlHbmBinding.Binder - Mapped property: ControllerName -> MenuItemController, type: String
[TestRunnerThread] DEBUG NHibernate.Cfg.XmlHbmBinding.Binder - Mapped property: ActionName -> MenuItemAction, type: String
[TestRunnerThread] INFO  NHibernate.Cfg.Configuration - Mapping resource: MySolution.Models.Mappings.Perspective.hbm.xml
[TestRunnerThread] INFO  NHibernate.Dialect.Dialect - Using dialect: NHibernate.Dialect.MsSql2008Dialect
[TestRunnerThread] INFO  NHibernate.Cfg.XmlHbmBinding.Binder - Mapping class: MySolution.Models.UserPerspective -> Perspectives
[TestRunnerThread] DEBUG NHibernate.Cfg.XmlHbmBinding.Binder - Mapped property: ID -> PerspectiveID, type: Int32
[TestRunnerThread] DEBUG NHibernate.Cfg.XmlHbmBinding.Binder - Mapped property: Name -> PerspectiveName, type: String
[TestRunnerThread] DEBUG NHibernate.Cfg.XmlHbmBinding.Binder - Mapped property: Description -> PerspectiveDescription, type: String
[TestRunnerThread] DEBUG NHibernate.Cfg.XmlHbmBinding.Binder - Mapped property: Password -> PerspectivePassword, type: String
[TestRunnerThread] INFO  NHibernate.Cfg.Configuration - Mapping resource: MySolution.Models.Mappings.ViewGroup.hbm.xml
[TestRunnerThread] INFO  NHibernate.Dialect.Dialect - Using dialect: NHibernate.Dialect.MsSql2008Dialect
[TestRunnerThread] INFO  NHibernate.Cfg.XmlHbmBinding.Binder - Mapping class: MySolution.Models.ViewGroup -> ViewGroups
[TestRunnerThread] DEBUG NHibernate.Cfg.XmlHbmBinding.Binder - Mapped property: ID -> ViewGroupID, type: Int32
[TestRunnerThread] DEBUG NHibernate.Cfg.XmlHbmBinding.Binder - Mapped property: Perspective -> Link_PerspectiveID, type: MySolution.Models.UserPerspective
[TestRunnerThread] DEBUG NHibernate.Cfg.XmlHbmBinding.Binder - Mapped property: MenuItems, type: Iesi.Collections.Generic.ISet`1[[MySolution.Models.MenuItem, MySolution.Models, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]](MySolution.Models.ViewGroup.MenuItems)
[TestRunnerThread] INFO  NHibernate.Cfg.Configuration - checking mappings queue
[TestRunnerThread] INFO  NHibernate.Cfg.Configuration - processing one-to-many association mappings
[TestRunnerThread] DEBUG NHibernate.Cfg.XmlHbmBinding.Binder - Second pass for collection: MySolution.Models.ViewGroup.MenuItems
[TestRunnerThread] INFO  NHibernate.Cfg.XmlHbmBinding.Binder - mapping collection: MySolution.Models.ViewGroup.MenuItems -> MenuItems
[TestRunnerThread] DEBUG NHibernate.Cfg.XmlHbmBinding.Binder - Mapped collection key: MenuItemID, one-to-many: MySolution.Models.MenuItem
[TestRunnerThread] INFO  NHibernate.Cfg.Configuration - processing one-to-one association property references
[TestRunnerThread] INFO  NHibernate.Cfg.Configuration - processing foreign key constraints
[TestRunnerThread] DEBUG NHibernate.Cfg.Configuration - resolving reference to class: MySolution.Models.ViewGroup
[TestRunnerThread] DEBUG NHibernate.Cfg.Configuration - resolving reference to class: MySolution.Models.UserPerspective
[TestRunnerThread] INFO  NHibernate.Cfg.Configuration - processing filters (second pass)
[TestRunnerThread] INFO  NHibernate.Dialect.Dialect - Using dialect: NHibernate.Dialect.MsSql2008Dialect
[TestRunnerThread] INFO  NHibernate.Exceptions.SQLExceptionConverterFactory - Using dialect defined converter
[TestRunnerThread] INFO  NHibernate.Cfg.SettingsFactory - Generate SQL with comments: disabled
[TestRunnerThread] INFO  NHibernate.Connection.ConnectionProviderFactory - Initializing connection provider: NHibernate.Connection.DriverConnectionProvider
[TestRunnerThread] INFO  NHibernate.Connection.ConnectionProvider - Configuring ConnectionProvider
[TestRunnerThread] INFO  NHibernate.Cfg.SettingsFactory - Transaction factory: NHibernate.Transaction.AdoNetWithDistrubtedTransactionFactory
[TestRunnerThread] INFO  NHibernate.Cfg.SettingsFactory - Optimize cache for minimal puts: False
[TestRunnerThread] INFO  NHibernate.Cfg.SettingsFactory - Connection release mode: auto
[TestRunnerThread] INFO  NHibernate.Cfg.SettingsFactory - Default batch fetch size: 1
[TestRunnerThread] INFO  NHibernate.Cfg.SettingsFactory - echoing all SQL to stdout
[TestRunnerThread] INFO  NHibernate.Cfg.SettingsFactory - Statistics: disabled
[TestRunnerThread] INFO  NHibernate.Cfg.SettingsFactory - Deleted entity synthetic identifier rollback: disabled
[TestRunnerThread] INFO  NHibernate.Cfg.SettingsFactory - Query translator: NHibernate.Hql.Ast.ANTLR.ASTQueryTranslatorFactory
[TestRunnerThread] INFO  NHibernate.Cfg.SettingsFactory - Query language substitutions: {}
[TestRunnerThread] INFO  NHibernate.Cfg.SettingsFactory - cache provider: NHibernate.Cache.NoCacheProvider, NHibernate, Version=2.1.2.4000, Culture=neutral, PublicKeyToken=aa95f207798dfdb4
[TestRunnerThread] DEBUG NHibernate.Cfg.SettingsFactory - Wrap result sets: disabled
[TestRunnerThread] INFO  NHibernate.Cfg.SettingsFactory - Batcher factory: NHibernate.AdoNet.NonBatchingBatcherFactory, NHibernate, Version=2.1.2.4000, Culture=neutral, PublicKeyToken=aa95f207798dfdb4
[TestRunnerThread] INFO  NHibernate.Cfg.SettingsFactory - Default entity-mode: Poco
[TestRunnerThread] INFO  NHibernate.Cfg.SettingsFactory - Named query checking : enabled
[TestRunnerThread] INFO  NHibernate.Impl.SessionFactoryImpl - building session factory
[TestRunnerThread] DEBUG NHibernate.Impl.SessionFactoryImpl - Session factory constructed with filter configurations : {}
[TestRunnerThread] DEBUG NHibernate.Impl.SessionFactoryImpl - instantiating session factory with properties: {'use_reflection_optimizer'='True', 'connection.provider'='NHibernate.Connection.DriverConnectionProvider', 'dialect'='NHibernate.Dialect.MsSql2008Dialect', 'connection.driver_class'='NHibernate.Driver.SqlClientDriver', 'connection.connection_string'='Server=MachineName\SQLEXPRESS;database=MySolution_Testing;Integrated Security=true;', 'proxyfactory.factory_class'='NHibernate.ByteCode.LinFu.ProxyFactoryFactory, Nhibernate.ByteCode.LinFu', 'show_sql'='true'}
[TestRunnerThread] DEBUG NHibernate.Connection.DriverConnectionProvider - Obtaining IDbConnection from Driver
[TestRunnerThread] DEBUG NHibernate.Connection.ConnectionProvider - Closing connection
正如您所看到的,NHibernate似乎正确地自行配置了它,然而,最后两行似乎表明,当实际请求连接时,出现了一些错误,并且所有连接都被关闭。这不会向NUnit报告,因此它只是无限期地等待有效连接的使用

我还有其他一些项目使用流畅的配置,似乎运行正常,但这些旧项目使用的是SQL Compact数据库,而不是SQL Express

有人能提出这个问题的解决方案吗


感谢您抽出时间。

最可能的原因是堆栈溢出,导致nunit-agent.exe进程崩溃。这会导致nunit.exe测试运行程序失去与代理进程的连接。有关更多信息,请参阅


我知道这已经快一年了,但希望您或其他人会发现这很有用。

谢谢您的评论。正如你所说,这个问题已经问了将近一年了,所以我继续往下问。我相信这个错误的原因与我的SQL server配置有关,我重新安装了整个套件。我仍然在同一台机器上工作,使用NHibernate和NUnit,没有问题,所以有些东西必须工作。
_configuration.Configure();
_configuration.AddAssembly(typeof(MyClass).Assembly);
_sessionFactory = _configuration.BuildSessionFactory();
[TestRunnerThread] INFO  NHibernate.Cfg.Environment - NHibernate 2.1.2.4000 (2.1.2.4000)
[TestRunnerThread] INFO  NHibernate.Cfg.Environment - hibernate-configuration section not found in application configuration file
[TestRunnerThread] INFO  NHibernate.Cfg.Environment - Bytecode provider name : lcg
[TestRunnerThread] INFO  NHibernate.Cfg.Environment - Using reflection optimizer
[TestRunnerThread] DEBUG NHibernate.Cfg.Configuration - connection.provider=NHibernate.Connection.DriverConnectionProvider
[TestRunnerThread] DEBUG NHibernate.Cfg.Configuration - dialect=NHibernate.Dialect.MsSql2008Dialect
[TestRunnerThread] DEBUG NHibernate.Cfg.Configuration - connection.driver_class=NHibernate.Driver.SqlClientDriver
[TestRunnerThread] DEBUG NHibernate.Cfg.Configuration - connection.connection_string=Server=MachineName\SQLEXPRESS;database=MySolution_Testing;Integrated Security=true;
[TestRunnerThread] DEBUG NHibernate.Cfg.Configuration - proxyfactory.factory_class=NHibernate.ByteCode.LinFu.ProxyFactoryFactory, Nhibernate.ByteCode.LinFu
[TestRunnerThread] DEBUG NHibernate.Cfg.Configuration - show_sql=true
[TestRunnerThread] DEBUG NHibernate.Cfg.Configuration - properties: System.Collections.Generic.Dictionary`2[System.String,System.String]
[TestRunnerThread] INFO  NHibernate.Cfg.Configuration - Mapping resource: MySolution.Models.Mappings.MenuItem.hbm.xml
[TestRunnerThread] INFO  NHibernate.Dialect.Dialect - Using dialect: NHibernate.Dialect.MsSql2008Dialect
[TestRunnerThread] INFO  NHibernate.Cfg.XmlHbmBinding.Binder - Mapping class: MySolution.Models.MenuItem -> MenuItems
[TestRunnerThread] DEBUG NHibernate.Cfg.XmlHbmBinding.Binder - Mapped property: ID -> MenuItemID, type: Int32
[TestRunnerThread] DEBUG NHibernate.Cfg.XmlHbmBinding.Binder - Mapped property: Name -> MenuItemName, type: String
[TestRunnerThread] DEBUG NHibernate.Cfg.XmlHbmBinding.Binder - Mapped property: ControllerName -> MenuItemController, type: String
[TestRunnerThread] DEBUG NHibernate.Cfg.XmlHbmBinding.Binder - Mapped property: ActionName -> MenuItemAction, type: String
[TestRunnerThread] INFO  NHibernate.Cfg.Configuration - Mapping resource: MySolution.Models.Mappings.Perspective.hbm.xml
[TestRunnerThread] INFO  NHibernate.Dialect.Dialect - Using dialect: NHibernate.Dialect.MsSql2008Dialect
[TestRunnerThread] INFO  NHibernate.Cfg.XmlHbmBinding.Binder - Mapping class: MySolution.Models.UserPerspective -> Perspectives
[TestRunnerThread] DEBUG NHibernate.Cfg.XmlHbmBinding.Binder - Mapped property: ID -> PerspectiveID, type: Int32
[TestRunnerThread] DEBUG NHibernate.Cfg.XmlHbmBinding.Binder - Mapped property: Name -> PerspectiveName, type: String
[TestRunnerThread] DEBUG NHibernate.Cfg.XmlHbmBinding.Binder - Mapped property: Description -> PerspectiveDescription, type: String
[TestRunnerThread] DEBUG NHibernate.Cfg.XmlHbmBinding.Binder - Mapped property: Password -> PerspectivePassword, type: String
[TestRunnerThread] INFO  NHibernate.Cfg.Configuration - Mapping resource: MySolution.Models.Mappings.ViewGroup.hbm.xml
[TestRunnerThread] INFO  NHibernate.Dialect.Dialect - Using dialect: NHibernate.Dialect.MsSql2008Dialect
[TestRunnerThread] INFO  NHibernate.Cfg.XmlHbmBinding.Binder - Mapping class: MySolution.Models.ViewGroup -> ViewGroups
[TestRunnerThread] DEBUG NHibernate.Cfg.XmlHbmBinding.Binder - Mapped property: ID -> ViewGroupID, type: Int32
[TestRunnerThread] DEBUG NHibernate.Cfg.XmlHbmBinding.Binder - Mapped property: Perspective -> Link_PerspectiveID, type: MySolution.Models.UserPerspective
[TestRunnerThread] DEBUG NHibernate.Cfg.XmlHbmBinding.Binder - Mapped property: MenuItems, type: Iesi.Collections.Generic.ISet`1[[MySolution.Models.MenuItem, MySolution.Models, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]](MySolution.Models.ViewGroup.MenuItems)
[TestRunnerThread] INFO  NHibernate.Cfg.Configuration - checking mappings queue
[TestRunnerThread] INFO  NHibernate.Cfg.Configuration - processing one-to-many association mappings
[TestRunnerThread] DEBUG NHibernate.Cfg.XmlHbmBinding.Binder - Second pass for collection: MySolution.Models.ViewGroup.MenuItems
[TestRunnerThread] INFO  NHibernate.Cfg.XmlHbmBinding.Binder - mapping collection: MySolution.Models.ViewGroup.MenuItems -> MenuItems
[TestRunnerThread] DEBUG NHibernate.Cfg.XmlHbmBinding.Binder - Mapped collection key: MenuItemID, one-to-many: MySolution.Models.MenuItem
[TestRunnerThread] INFO  NHibernate.Cfg.Configuration - processing one-to-one association property references
[TestRunnerThread] INFO  NHibernate.Cfg.Configuration - processing foreign key constraints
[TestRunnerThread] DEBUG NHibernate.Cfg.Configuration - resolving reference to class: MySolution.Models.ViewGroup
[TestRunnerThread] DEBUG NHibernate.Cfg.Configuration - resolving reference to class: MySolution.Models.UserPerspective
[TestRunnerThread] INFO  NHibernate.Cfg.Configuration - processing filters (second pass)
[TestRunnerThread] INFO  NHibernate.Dialect.Dialect - Using dialect: NHibernate.Dialect.MsSql2008Dialect
[TestRunnerThread] INFO  NHibernate.Exceptions.SQLExceptionConverterFactory - Using dialect defined converter
[TestRunnerThread] INFO  NHibernate.Cfg.SettingsFactory - Generate SQL with comments: disabled
[TestRunnerThread] INFO  NHibernate.Connection.ConnectionProviderFactory - Initializing connection provider: NHibernate.Connection.DriverConnectionProvider
[TestRunnerThread] INFO  NHibernate.Connection.ConnectionProvider - Configuring ConnectionProvider
[TestRunnerThread] INFO  NHibernate.Cfg.SettingsFactory - Transaction factory: NHibernate.Transaction.AdoNetWithDistrubtedTransactionFactory
[TestRunnerThread] INFO  NHibernate.Cfg.SettingsFactory - Optimize cache for minimal puts: False
[TestRunnerThread] INFO  NHibernate.Cfg.SettingsFactory - Connection release mode: auto
[TestRunnerThread] INFO  NHibernate.Cfg.SettingsFactory - Default batch fetch size: 1
[TestRunnerThread] INFO  NHibernate.Cfg.SettingsFactory - echoing all SQL to stdout
[TestRunnerThread] INFO  NHibernate.Cfg.SettingsFactory - Statistics: disabled
[TestRunnerThread] INFO  NHibernate.Cfg.SettingsFactory - Deleted entity synthetic identifier rollback: disabled
[TestRunnerThread] INFO  NHibernate.Cfg.SettingsFactory - Query translator: NHibernate.Hql.Ast.ANTLR.ASTQueryTranslatorFactory
[TestRunnerThread] INFO  NHibernate.Cfg.SettingsFactory - Query language substitutions: {}
[TestRunnerThread] INFO  NHibernate.Cfg.SettingsFactory - cache provider: NHibernate.Cache.NoCacheProvider, NHibernate, Version=2.1.2.4000, Culture=neutral, PublicKeyToken=aa95f207798dfdb4
[TestRunnerThread] DEBUG NHibernate.Cfg.SettingsFactory - Wrap result sets: disabled
[TestRunnerThread] INFO  NHibernate.Cfg.SettingsFactory - Batcher factory: NHibernate.AdoNet.NonBatchingBatcherFactory, NHibernate, Version=2.1.2.4000, Culture=neutral, PublicKeyToken=aa95f207798dfdb4
[TestRunnerThread] INFO  NHibernate.Cfg.SettingsFactory - Default entity-mode: Poco
[TestRunnerThread] INFO  NHibernate.Cfg.SettingsFactory - Named query checking : enabled
[TestRunnerThread] INFO  NHibernate.Impl.SessionFactoryImpl - building session factory
[TestRunnerThread] DEBUG NHibernate.Impl.SessionFactoryImpl - Session factory constructed with filter configurations : {}
[TestRunnerThread] DEBUG NHibernate.Impl.SessionFactoryImpl - instantiating session factory with properties: {'use_reflection_optimizer'='True', 'connection.provider'='NHibernate.Connection.DriverConnectionProvider', 'dialect'='NHibernate.Dialect.MsSql2008Dialect', 'connection.driver_class'='NHibernate.Driver.SqlClientDriver', 'connection.connection_string'='Server=MachineName\SQLEXPRESS;database=MySolution_Testing;Integrated Security=true;', 'proxyfactory.factory_class'='NHibernate.ByteCode.LinFu.ProxyFactoryFactory, Nhibernate.ByteCode.LinFu', 'show_sql'='true'}
[TestRunnerThread] DEBUG NHibernate.Connection.DriverConnectionProvider - Obtaining IDbConnection from Driver
[TestRunnerThread] DEBUG NHibernate.Connection.ConnectionProvider - Closing connection