我有一个类库来完成我所有的NHibernate工作。它还使用Fluent NHibernate处理所有映射 - 没有要部署的映射文件。
此类库由许多应用程序使用,包括在我的计算机上运行的Windows服务。虽然它在我的所有Web应用程序中都能正常工作,但Windows服务在尝试使用NHibernate时会得到这个:
创建SessionFactory时使用了无效或不完整的配置。检查PotentialReasons集合,以及InnerException以获取更多详细信息。 在FluentNHibernate.Cfg.FluentConfiguration.BuildSessionFactory() 在C:\ Kctc \ Trunk \ Kctc.NHibernate \ KctcSessionFactory.cs中的Kctc.NHibernate.KctcSessionFactory.get_SessionFactory():第28行 ...更多堆栈跟踪...
我已检查过InnerException,但似乎没有。我不知道PotentialReasons系列是什么,谷歌似乎也没有。
这是我的开发机器,所以当我在我的网络应用程序上工作时,它们在本地运行(即在Visual Studio中使用Web服务器)。 Windows服务和我的开发网络应用程序在同一台计算机上运行这一事实表明它与信任设置无关,或者与您有什么关系。
有谁能建议我应该尝试一下?这是我难以理解的其中一个,我甚至无法想到如何获得有关该问题的更多信息。
答案 0 :(得分:0)
只是一个疯狂的猜测。 NHibernate从执行目录中获取hibernate.cfg.xml
文件。您是否配置了可以找到该文件的服务的执行目录?
答案 1 :(得分:0)
我打赌app.config中缺少连接字符串的名称。对我来说,该消息几乎完全是一个缺失的连接字符串。
您是定位到同一个数据库还是数据库之间存在某种模式不匹配?
是否可能是服务上的身份验证问题,就像您使用无法使用的Windows身份验证(或无效的sql身份验证)?
很难判断什么时候没有代码,只是例外!
编辑您是否曾使用过HttpContext,HostingEnvironment或其他任何特定于“网络”的内容?
答案 2 :(得分:0)
我发现了问题所在。该服务未使用所需的NHibernate.ByteCode.LinFu.dll进行部署。
我似乎一直存在Visual Studio编译器的问题,并不总是在构建期间将间接依赖项(即应用程序所需的类库所需的dll)复制到输出文件夹中。我应该早点想到这个。
感谢代表我们绞尽脑汁。