错误:提供程序与oracle的版本不兼容

时间:2017-12-21 12:58:03

标签: c# .net oracle iis odac

我开发了一个基于.Net C#的网站,主要依赖于Oracle数据库。要访问数据库,我一直在使用Oracle ODAC 11G。 (Oracle.DataAccess.dll版本:1.111.6.10)。

当我在本地运行测试时,网站运行正常(VS 2013上的Ctrl + F5)。但是,在本地发布它(我的PC运行IIS)后,我遇到了一个有线错误:“提供程序与oracle版本不兼容”。

我已经确定应用程序设置为在iis控制台中以32位模式运行。但是当我从visual studio运行它时,我仍然无法弄清楚为什么网站有效,而且当我发布它时它不起作用。

1 个答案:

答案 0 :(得分:0)

仔细检查(!)目标计算机上安装的Oracle Client版本。

  • 是否与Oracle.DataAccess.dll具有相同的架构(即32位或64位)?
  • 版本是否匹配。你必须比较甚至是次要版本。只是" 11.1"还不够。

我推荐使用Sigcheck工具,即

cd %ORACLE_HOME%
sigcheck -s oraociei*.dll
sigcheck -s OraOps*w.dll

同时检查加载了哪个文件Oracle.DataAccess.dll。它可能是从GAC加载的(默认情况下GAC优先)而不是您提供的文件。只需找出这样加载的DLL:

var con = New OracleConnection();
Console.WriteLine(con.GetType().Assembly.FullName);
Console.WriteLine(con.GetType().Assembly.Location);

另见The provider is not compatible with the version of Oracle client