NHibernate,WCF& SqlServerCE - 异常抛出加载驱动程序

时间:2009-09-27 10:34:05

标签: wcf nhibernate exception sql-server-ce

背景

我有一个使用NHibernate的BLL DLL。我在客户端应用程序和WCF服务之间共享相同的BLL(即使客户端在另一台机器上运行)。

我可以成功使用带有客户端应用程序的BLL的SqlServerCe或SqlServer驱动程序,但只能使用SqlServer驱动程序进行WCF。

如果我将hibernate.cfg.xml更改为使用SQL Server,我可以根据需要使用该服务,不会抛出任何异常。

错误

log4net输出的确切错误是:

2421, 5, DEBUG, NHibernate.Connection.DriverConnectionProvider, (null),Obtaining IDbConnection from Driver 
2483, 5, DEBUG, NHibernate.Connection.DriverConnectionProvider, (null),Exception thrown obtaining connection: Exception has been thrown by the target of an invocation. 

我的WCF代码后面的代码也有以下代码:

AppDomain.CurrentDomain.SetData("SQLServerCompactEditionUnderWebHosting", true);

备注

  • WCF bin目录包含NHibernate和SqlServerCe所需的所有DLL
  • System.Data.SqlServerCe.dll是否在GAC中无关紧要
  • 将System.Data.SqlServerCe.dll添加到程序集下的web.config文件中无关紧要
  • 操作系统是Windows Server 2003 R2 SP2
  • 安装.NET Framework 3.5SP1
  • 安装Visual Studio 2008
  • 只是因为,我卸载了与精简版有关的任何内容,但这仍然无法解决问题

问题

您如何尝试确定为什么NHibernate无法加载SqlServerCe框架?

您将尝试并准确地确定问题进行哪些取证分析,以便您可以找到解决问题的方法?

更新1

包含它是我的代码我刚刚创建了一个简单的网站,并且能够成功使用ORM使用SDF数据库的硬编码路径插入和检索记录。如果我为webservice使用相同的hibernate配置文件,则会生成异常。这确实将问题缩小到了WCF实现。

1 个答案:

答案 0 :(得分:0)

好吧,清除ASP.NET临时缓存没有做任何事情,删除和重新发布我的网站什么也没做,但是在Windows 2003 R2 SP2操作系统上恢复到虚拟机快照了!

更新或我自己必须对导致问题的操作系统做了一些事情。

我现在有一个不同的问题,因为SQL没有在环境下成功运行,但至少NHibernate驱动程序正在加载并运行这个问题。

更新:是的,我只能让NHibernate与SQL Server交谈,这对webservice端点来说很好。我们将在稍后阶段调查这些问题。将此答案标记为正确答案,因为没有添加其他评论。