【发布时间】:2015-08-25 18:30:17
【问题描述】:
“与 Oracle 版本不兼容的 Oracle 提供程序”的错误已在 stackoverflow 上被问过几次,但似乎所有答案都针对 x86 与 64 位或缺少 DLL。
我不确定这种情况是否独特,但是...
我有一个 web 项目、win 项目和一个包含一些共享代码的项目。 现在所有 3 个项目都设置为“任何 CPU”。 win项目可以连接oracle,但是web项目报错
Oracle.DataAccess.Client.OracleException:提供程序不是 与Oracle客户端版本兼容
web 和 win 项目的 bin 文件夹中都有相同的 DLL。
为什么一个可以连接,而另一个不能?我还能尝试什么? (我也尝试过其他平台目标)。
运行时出现错误:
OracleConnection oc = new OracleConnection(ConnectionString);
编辑:连接字符串是通过从 SQL 数据库中读取凭据从 Shared 项目编译的,因此 Win 和 web 连接字符串是相同的。这是一个示例:
User Id=xxx;Password=xxx;
Data Source=(DESCRIPTION=
(ADDRESS=(PROTOCOL=TCP)
(HOST=172.xx.xx.xx)
(PORT=1521))
(CONNECT_DATA=(SID=xxx)));
【问题讨论】:
-
你在 web 和 win 项目之间共享 ConnectionString 吗?你能告诉我们每个人的连接字符串吗(编辑凭据很好)
-
我已经更新了我的帖子。请参阅编辑块。
-
您确定您对 Oracle.DataAccess 的 Web 引用指向同一个 .dll 吗?我们为具有多个项目的解决方案使用 SharedBinaries 文件夹以避免可能的冲突,但您仍然需要确保实际项目引用指向正确的二进制文件。
-
嗯,这是不同的文件,但它们的版本号相同。
-
为了争论,您能否将 web 项目中的引用更改为指向 win 项目中的工作 .dll?这应该会很快告诉您问题所在。