首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使IIS使用与IIS-Express相同的Oracle版本

如何使IIS使用与IIS-Express相同的Oracle版本
EN

Stack Overflow用户
提问于 2017-10-18 21:58:08
回答 1查看 603关注 0票数 2

我在使用Oracle 11 (32位)与Oracle 12 (64位)时遇到了问题。因为这里的一些平台仍然有32位的windows,所以我们使用32位的Oracle11进行标准化。WinForms应用程序和Asp站点在我们所有的平台上都能在32位模式下正常工作。

只有我的开发机器有两个Oracle版本。我使用VisualStudio 2015进行开发,使用IISExpress进行调试。但是,当在我的开发机器上运行IIS时,它尝试运行64位Oracle12,并抛出异常Oracle.DataAccess.Client: the provider is not compatible with the version of Oracle Client.

卸载Oracle12似乎很复杂,所以我所做的是通过将安装目录重命名为c:\oracle\product\12.1.0XXX来禁用它。另外,我删除了注册表项HKLM/Software/Oracle,因为它指向Oracle12,并且不存在于只包含Oracle-11的服务器上。

我还从GAC卸载了Oracle 2.121.2.0的dll。

重新启动后,VS2015和IISExpress仍然可以正常运行Oracle代码,但是使用IIS时,我看到了错误:Unable to load DLL 'OraOps12.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E)。这表明IIS在IISExpress之外的另一个地方查找Oracle DDL。

在Oracle11之前的PATH变量中提到了Oracle12。因为我现在不知道如何轻松地更改路径,在过去它是在autoexec.bat中设置的,我认为通过重命名Oracle12路径,它已经得到了解决。应用程序将探测PATH中提到的所有目录,如果Oracle12目录不存在,将继续查找PATH中的下一个目录。但是,如果IIS显式查找OraOps12.dll,它将永远不会使用Oracle11。

我的问题是如何让IIS使用与IISExpress相同的Oracle DLL?

EN

回答 1

Stack Overflow用户

发布于 2017-10-20 21:08:41

什么都不能用,所以我卸载了Oracle12,解决了这个问题。

我试图解决的原因是卸载Oracle12非常麻烦。只能卸载所有Oracle,然后重新安装Oracle 11,所有步骤都非常慢。整个工作大约花了一个半小时。然后我发现我的dll版本是2.112.1.0而不是2.111.7.20,所以我不得不在Visual Studio中替换几个(但不是所有)项目中的引用才能构建。

底线是您不应该在您的C# Asp.Net项目中尝试Oracle12中的64位Oracle。只要坚持使用32位Oracle 11,否则你会后悔的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46811947

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档