我正在机器中运行Oracle XE 10g我已经创建了一个测试应用程序来测试一些插件,在不同的机器上启动它,一切正常。 问题是当我在安装了oracle XE的同一台机器上安装大型应用程序时。当我启动应用程序时,我收到此错误
Oracle.DataAccess.Client.OracleException The provider is not compatible with the version
of Oracle client
en Oracle.DataAccess.Client.OracleInit.Initialize()
en Oracle.DataAccess.Client.OracleConnection..cctor()
en Oracle.DataAccess.Client.OracleConnection..ctor()
en Test.DB.Oracle.OracleManagerConnection.GetConnection()
在此行OracleConnection conn = new OracleConnection()
我不知道它是如何在一台机器上工作而在另一台机器上不起作用的。问题出在Windows Server 2008 x64(alredy将Oracle.DataAccess.dll复制到.exe目录中)。
答案 0 :(得分:1)
ODP.NET是一个真正的PITA,主要是因为错误信息是如此模糊。
以下内容可能会触发此错误消息:
请注意,Oracle.DataAccess.dll用于查找非托管DLL的过程非常复杂,因为它是一个考虑环境变量,注册表值等的多步骤过程。
答案 1 :(得分:0)
可能还有另一种情况,例如对32位oracle客户端运行64位.net运行时。那么你可以检查托管小应用程序的机器是运行x64还是32bit。如果它是32位,那么显然复制的提供程序将无法在X64 Windows服务器上运行。在这种情况下,您需要下载64位提供程序版本或在大型项目(在VS中)上设置目标CPU标志以在32位运行时运行。