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


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

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

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

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


41
2018-01-15 18:54


起源




答案:


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

原因

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


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

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

再试一次你的申请。


55
2018-05-11 23:42



我之前听过这个令人费解的伎俩。很难相信它有效,但确实如此。 - Sake
我们有一个变体 - SS Reporting Services运行的用户不是“Authenticated Users”的一部分,因此我们必须确保特定用户可以访问正确的文件夹。但总而言之,这是一个很好的,有用的信息! - Ogre Psalm33
如果在Windows 7上出现此问题,这个技巧就解决了这个问题。 - reticent
另一个满意的知识寻求者。接受这个答案! - Jason
我在哪里可以找到 ORACLE_HOME 夹?安装Oracle Database Client 12c第1版时,它不会创建任何名为的文件夹 ORACLE_HOME 在选定的安装路径中。也没有一个名为的环境变量 ORACLE_HOME。 - Ian Boyd


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


4
2017-08-30 17:24



看起来链接不再好了。 - MrBoJangles


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

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


2
2018-01-15 19:32





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


1
2018-05-15 12:02





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

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

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


0
2018-01-28 16:56





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

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

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


0
2018-05-11 23:23





对我来说,问题是我的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将来修复的。


0
2017-10-17 21:56