【发布时间】:2015-06-29 11:29:18
【问题描述】:
我遇到了这个问题,我一直在想办法解决这个问题。我有一个 ASP.NET 应用程序(我相信是用 .NET 1.1 编写的,没有可用的源代码),它通过 OleDB 连接连接到 Oracle 数据库。
主机最近已更换为 64 位 Windows 2012,并且 Oracle 数据库升级到 v 12。现在,我能够让应用程序在新服务器上运行的唯一方法是切换应用程序池在 IIS 上以 32 位模式运行。一切似乎都正常 - 除了与 Oracle 的连接。
我使用的连接字符串是:
Provider=OraOLEDB.Oracle; Data Source=DSNAME;User ID=user;Password=password;Unicode=True
当我尝试在 64 位应用程序池模式下运行一个简单的 ASP.NET 测试 Web 应用程序以测试连接时 - 它工作正常!当我切换到 32 位模式时 - 它返回以下 The 'OraOLEDB.Oracle' provider is not registered on the local machine.
现在,我已尝试下载并安装 32 位版本的 Oracle 数据访问组件并运行 install.bat 和 configure.bat(似乎已执行没有任何错误 - 但提供程序仍然无法正常工作!
当我运行以下命令行时(启动 32 位 OleDB 配置屏幕)
C:\Windows\syswow64\rundll32.exe "C:\Program Files (x86)\Common Files\System\Ole DB\oledb32.dll",OpenDSLFile D:\test.udl
我收到Provider can not be found. Ensure provider has been installed properly. 消息提示。
请帮忙!
【问题讨论】:
-
你能知道 IIS 服务器是否同时具有 32 位和 64 位 ODBC 版本?我不确定,但我想 IIS 在你的情况下只有 64 位。
-
如果您想在 32 位和 64 位之间切换,您必须同时安装 32 位和 64 位的 Oracle 客户端。按照此说明执行此操作:Stack Overflow - Install Oracle x86 and x64
标签: asp.net oracle oledb 32bit-64bit