代码之家  ›  专栏  ›  技术社区  ›  Wayne

nhibernate、wcf和sqlserverce-加载驱动程序引发异常

  •  0
  • Wayne  · 技术社区  · 16 年前

    背景

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

    我可以将sqlserverce或sqlserver驱动程序与BLL一起成功地用于客户端应用程序,但只能将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
    • 只是为了以防万一,我卸载了与Compact Edition有关的任何内容,但这仍然没有解决问题。

    问题

    您将如何尝试并确定为什么nhibernate无法加载sqlserverce框架?

    你会进行什么样的法医分析来尝试和准确地确定问题,以便找到解决方法?

    更新1

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

    1 回复  |  直到 16 年前
        1
  •  0
  •   Wayne    16 年前

    好吧,清除ASP.NET临时缓存并没有做任何事情,删除并重新发布我的站点也没有做任何事情,而是恢复到Windows 2003 R2 SP2 O/S上的VM快照!

    更新或者我自己一定对引起问题的操作系统做了些什么。

    我现在有一个不同的问题,因为SQL没有在环境中成功运行,但至少NHibernate驱动程序正在加载和运行,而这个问题正是针对它提出的。

    更新:是的,我只能让NHibernate与SQL Server保持对话,这对于WebService端点来说是很好的。我们将在稍后阶段调查这些问题。将此答案标记为正确答案,因为未添加其他注释。

    推荐文章