Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 提供程序与Oracle client:Web版本不兼容,但与Win版本不兼容_C#_Oracle11g - Fatal编程技术网

C# 提供程序与Oracle client:Web版本不兼容,但与Win版本不兼容

C# 提供程序与Oracle client:Web版本不兼容,但与Win版本不兼容,c#,oracle11g,C#,Oracle11g,关于stackoverflow,“Oracle提供程序与Oracle版本不兼容”的错误已经被问了好几次,但似乎所有的答案都指向x86 vs 64位或缺少DLL 我不确定这种情况是否独特,但是 我有一个web项目、win项目和一个带有一些共享代码的项目。 现在所有3个项目都设置为“任意CPU”。win项目可以连接到Oracle,但Web项目会给出错误信息 Oracle.DataAccess.Client.OracleException:提供程序不是 与Oracle客户端的版本兼容 web和win项

关于stackoverflow,“Oracle提供程序与Oracle版本不兼容”的错误已经被问了好几次,但似乎所有的答案都指向x86 vs 64位或缺少DLL

我不确定这种情况是否独特,但是

我有一个web项目、win项目和一个带有一些共享代码的项目。 现在所有3个项目都设置为“任意CPU”。win项目可以连接到Oracle,但Web项目会给出错误信息

Oracle.DataAccess.Client.OracleException:提供程序不是 与Oracle客户端的版本兼容

web和win项目的bin文件夹中都有相同的DLL

为什么一个能连接,另一个却不能?我还能试什么?我还尝试了其他平台目标

运行时发生错误:

OracleConnection oc = new OracleConnection(ConnectionString);
编辑:通过从SQL数据库中读取凭据,从共享项目编译连接字符串,因此Win和web conn字符串是相同的。以下是一个示例:

User Id=xxx;Password=xxx;
Data Source=(DESCRIPTION=
(ADDRESS=(PROTOCOL=TCP)
(HOST=172.xx.xx.xx)
(PORT=1521))
(CONNECT_DATA=(SID=xxx)));

当您的oracle db版本与您正在使用的oracleOracle.DataAccess.dll不同时,会发生这种情况,检查版本如果是这种情况,那么您需要使用正确版本的oracleOracle.DataAccess.dll。在获得正确版本的dll后,您需要在所有项目中更改oracleOracle.DataAccess.dll的引用。从10g迁移到11g时遇到类似情况。

我也有同样的问题,事实证明,当您在本地运行web项目时,iis express默认使用32位作为标准,而您的其他项目可能使用64位版本的dll,这就是它们行为不同的原因,您可以启用iis express使用64位版本,或者您可以选择安装32位版本的ODAC

您是否在web和win项目之间共享ConnectionString?你能给我们看一下每个证书的连接字符串吗?我已经更新了我的帖子。请参阅编辑块。是否确定对Oracle.DataAccess的web引用指向相同的.dll?我们使用SharedBinaries文件夹来解决有多个项目的解决方案,以避免可能的冲突,但您仍然需要确保实际的项目引用指向正确的二进制文件。好吧,这是不同的文件,但两个文件上的版本号相同。为了讨论起见,您可以,是否更改web项目中的引用以指向win项目中的working.dll?这会很快告诉你问题所在。这是错误的。使用10.2客户端连接到11g数据库不是问题。