我目前正在实施 WCF 服务,该服务与后端的 Oracle 10g 数据库通信。当我尝试从我的服务中连接到数据库时,出现以下异常:System.TypeInitializationException
.
我在 Windows 7(64 位机器)上运行。
我正在使用 VS 2010。
我在后端使用 Oracle 10g。
我是来自以下已安装实例的 Oracle.DataAccess.dll (ODP.Net)
c:\oracle\product\10.2.0\.....\ODP.NET\bin\1.x\Oracle.DataAccess.dll
我已将此 DLL 包含在我的 WCF 服务的引用中。
我已将此服务作为一个项目包含在我的 VS WPF 解决方案中。
当我在 VS 2010 中启动 WPF 应用程序时,该服务会自动启动。
在运行时,我在调试输出窗口中看到以下输出:
'WcfSvcHost.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\assembly\GAC\Oracle.DataAccess\1.102.2.20__89b483f429c47342\Oracle.DataAccess.dll' 'System.TypeInitializationException 类型的第一次机会异常'发生在 Oracle.DataAccess.dll
果然,我在调试器中查看异常详细信息,看到以下信息(当我尝试创建新的 ORACLE 连接时会出现这种情况):
“'Oracle.DataAccess.Client.OracleConnection' 的类型初始化程序引发了异常。” InnerException {“提供程序与 Oracle 客户端版本不兼容”} System.Exception {Oracle.DataAccess.Client.OracleException}
一点背景:
我基本上是将我的数据层迁移到 WCF 服务。相同的服务层以前存在于 WinForm 应用程序中。在我的 WinForm 应用程序中一切正常。我包含对 Oracle.DataAccess.dll 的相同引用,并且我对数据库的所有读/写操作都可以正常工作。
WCF 和 WinForm 对 DLL 的访问/使用之间是否存在明显不同?有一些我不知道的限制吗?在调试器中通过 VS2010 运行这个有问题吗?
我完全不知道这里发生了什么。任何提示/方向将不胜感激。