System.Data.OracleClient需要Oracle客户端软件版本8.1.7

时间:2009-01-15 18:54:50

标签: vb.net oracle

我有一个使用Vb.net9在Vista上开发的网站。它与Oracle建立了连接。对于连接,我使用System.Data.OracleClient。它在我的机器和我们的测试服务器上工作正常,但它在生产服务器上不起作用。我们在服务器上安装了Oracle Client 11。错误是System.Data.OracleClient需要Oracle客户端软件版本8.1.7

我们已经尝试过,制作一个打开连接的控制台应用程序,连接运行正常,打开,显示一条消息,一切都很顺利。

然后我们制作一个简单的Web表单,将其放在程序目录中,只需一个按钮,打开连接,try..catch,抓取错误,同样的错误。

控制台应用程序在iwam下运行的管理员网站下运行。 iwam有可能有不同的路径吗?

7 个答案:

答案 0 :(得分:56)

我遇到过这个错误几十次:

原因

在使用NTFS的Windows上安装Oracle客户端时,未正确设置安全权限。结果是ORACLE_HOME目录的内容对机器上的Authenticated Users不可见;当System.Data.OracleClient使用经过身份验证的用户权限从ASP.NET与Oracle Connectivity软件进行通信时,这会导致错误。

解决方案

要解决此问题,您必须将Authenticated Users组权限授予Oracle主目录。

  • 以具有管理员权限的用户身份登录Windows。
  • 启动Window Explorer并导航到ORACLE_HOME文件夹。
  • 在ORACLE_HOME文件夹中选择属性。
  • 单击“属性”窗口的“安全”选项卡。
  • 点击“名称”列表中的“经过身份验证的用户”项。
  • 取消选中“允许”列下“权限”列表中的“阅读并执行”框。
  • 重新检查“允许”列下的“阅读并执行”框。
  • 单击“高级”按钮,然后在“权限条目”中验证“已验证的用户”是否已列出权限=“读取&执行“,并应用于=”此文件夹,子文件夹和文件“。如果没有,请编辑该行并确保“应用于”下拉框设置为“此文件夹,子文件夹和文件”。这应该已经正确设置,但验证它很重要。
  • 单击“确定”按钮,直到关闭所有安全属性窗口。光标可能会将小时玻璃显示几秒钟,因为它会将您刚刚更改的权限应用于所有子文件夹和文件。
  • 重新启动,以确保更改已生效。

再次尝试使用您的应用程序。

答案 1 :(得分:4)

此帖子的作者(现已删除的帖子)建议检查您的C:\Windows\System32文件夹,以确保oci.dll存在。从Oracle主目录复制文件为我解决了这个问题。

答案 2 :(得分:2)

更新1:不同用户可能有不同的路径。但这不是可能的问题。用户iwam用户没有权利访问oracle客户端目录。

更新0:它假设有效。检查环境变量(找到oracle客户端和tnsnames.ora需要)。此外,也许你有32/64位问题。另外,请考虑使用Oracle Data Provider for .NET(搜索odp.net)

答案 3 :(得分:1)

Oracle客户端版本11无法连接到8i数据库。您最多需要一个版本10的客户端。

答案 4 :(得分:0)

当我们第一次使用Oracle 10g迁移到Vista时,我们在Vista盒子上安装Oracle客户端时遇到了这个问题,即使我们在安装过程中使用管理员权限运行也是如此。

Oracle推出了与Vista兼容的新版10g客户端(10.2.0.3)。

我确实认为这是在11g发布之后,因此有可能还有11g的“Vista兼容”版本。

答案 5 :(得分:0)

为什么不使用它:dotConnect for Oracle(以前称为OraDirect .NET)?

可以将其配置为根本不需要Oracle客户端。

我们一直在Windows服务和ASP.NET Web服务中使用它,它就像一个魅力。

答案 6 :(得分:0)

对我来说,问题是我的Visual Studio中的一些插件开始强制我的应用程序进入x64 64位模式,因此我找不到Oracle驱动程序,因为我安装了Oracle 32位。

因此,如果您遇到此问题,请尝试在safemode(devenv / safemode)中运行Visual Studio。 我可以通过使用SysInternals / Microsoft的ProcMon应用程序找到它在SYSWOW64中查找ic.dll文件。

更新:对我来说,导致问题的是Telerik JustTrace产品,它可能会以某种方式挂钩并影响运行时版本进行跟踪。

Update2:不仅JustTrace导致问题,JustMock导致相同的处理器模式问题。 JustMock更容易修复:点击JustMock->禁用Profiler,然后我的Web应用程序的oracle驱动程序以正确的CPU模式运行。这可能是Telerik将来修复的。