【问题标题】:FluentNHibernate blows up in Windows Service but not websiteFluentNHibernate 在 Windows 服务中爆炸,但不是网站
【发布时间】:2010-08-25 13:33:25
【问题描述】:

我有一个类库来完成我所有的 NHibernate 工作。它还使用 Fluent NHibernate 处理所有映射 - 无需部署映射文件。

这个类库被许多应用程序使用,包括在我的计算机上运行的 Windows 服务。虽然它在我所有的网络应用程序中都可以正常工作,但 Windows 服务在尝试使用 NHibernate 时会得到这个:

创建 SessionFactory 时使用了无效或不完整的配置。检查 PotentialReasons 集合和 InnerException 了解更多详细信息。 在 FluentNHibernate.Cfg.FluentConfiguration.BuildSessionFactory() 在 C:\Kctc\Trunk\Kctc.NHibernate\KctcSessionFactory.cs:line 28 中的 Kctc.NHibernate.KctcSessionFactory.get_SessionFactory() ...更多堆栈跟踪...

我检查了 InnerException,但似乎没有。我不知道PotentialReasons 集合是什么,而且Google 似乎也不会出现。

这是我的开发机器,所以当我处理我的网络应用程序时,它们在本地运行(即使用 Visual Studio 中的网络服务器)。 Windows 服务和我的开发 Web 应用程序在同一台机器上运行的事实表明这与信任设置或您拥有的东西无关。

谁能建议我应该尝试什么?这是让我很困惑的问题之一,我什至想不出如何获得有关该问题的更多信息。

【问题讨论】:

  • 你检查过 InnerException。那里有关于你的错误的具体信息。
  • 是的。似乎没有 InnerException。

标签: fluent-nhibernate windows-services nhibernate-mapping


【解决方案1】:

只是一个疯狂的猜测。 NHibernate 从执行目录中获取hibernate.cfg.xml 文件。你有没有配置服务的执行目录让它能找到这个文件?

【讨论】:

  • 恐怕我不明白这个问题。因为我使用的是 FluentNHibernate,所以没有配置文件。如何配置“执行目录”?
【解决方案2】:

我发现了问题所在。服务未部署所需的 NHibernate.ByteCode.LinFu.dll。

Visual Studio 编译器似乎一直存在问题,它并不总是在构建期间将间接依赖项(即应用程序所需的类库所需的 dll)复制到输出文件夹中。我真的应该早点想到这一点。

感谢你们代表我绞尽脑汁。

【讨论】:

  • 我对 dll 和 VS 有同样的问题。
【解决方案3】:

我敢打赌 app.config 中缺少连接字符串的名称。对我来说,该消息几乎完全是缺少连接字符串。

您是针对同一个数据库还是数据库之间存在某种架构不匹配?

可能是服务上的身份验证问题,例如您使用无法使用的 windows 身份验证(或 sql 身份验证不起作用)?

什么时候没有代码很难说,只是个例外!

编辑您是否曾经使用过 HttpContext、HostingEnvironment 或其他特定于“网络”的东西?

【讨论】:

  • 遗憾的是它就在那里。我知道基本的 ADO.NET 东西可以工作,因为我仍然在服务中运行 pre-NHibernate 数据访问代码。不过谢谢你的提问!
  • 添加了更多问题。你没有给我们很多信息大卫:)
  • 抱歉,我不知道要提供什么,因为我很困惑。它与实时系统相同的数据库。类库不需要任何身份验证。我没有提供配置代码,因为它适用于网络应用程序,因此肯定没问题吗?请让我知道您希望我发布什么。
猜你喜欢
  • 2011-10-05
  • 2011-08-11
  • 2015-12-25
  • 2016-11-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-16
相关资源
最近更新 更多